home *** CD-ROM | disk | FTP | other *** search
/ IRIX Development Foundation for IRIX 6.4 / SGI IRIX 6.4 Development Foundation.iso / docs6.4 / relnotes / license_eoe / ch7.z / ch7
Text File  |  1997-09-11  |  115KB  |  3,169 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        5.  _G_l_o_b_e_t_r_o_t_t_e_r__F_L_E_X_l_m__R_e_l_e_a_s_e__N_o_t_e_s
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.                               Flexible License Manager
  19.  
  20.                                     Version 5.11
  21.  
  22.                                    RELEASE NOTES
  23.  
  24.                                   February 5, 1997
  25.  
  26.                These release notes describe the changes from FLEXlm v5.0
  27.                The release notes for FLEXlm v5.0 appear below.
  28.  
  29.  
  30.  
  31.        OVERVIEW
  32.        ________
  33.  
  34.                o lc_hostid() -- improved hostid interface.
  35.                o LM_A_RETRY_CHECKOUT attribute -- improved checkout reliability
  36.                o SUPERSEDE="feat1 ... featn" -- New license file option.
  37.                  Allows one feature to supersede any other previous feature lines.
  38.                o PLATFORMS="plat1 ..." -- license can lock to particular
  39.                  hardware platforms.
  40.                o Serial Number hostid (ID=nnnn) -- for licensing without
  41.                  requiring real end-user hostid.
  42.                o lmdiag can checkout individual INCREMENT lines.
  43.                o WARNING() -- improved status reporting for Lenient Licensing.
  44.                o PERROR(), PWARN() -- easier Windows programming.
  45.                o MAX -- New End-User option allows sysadmin to prioritize
  46.                  use amongst groups.
  47.                o TIMEOUTALL -- Easier way to TIMEOUT all features via end-user
  48.                  options file.
  49.                o lc_checkin(...LM_CI_ALL_FEATURES...) -- You can now checkin
  50.                  all features with one call.  This gives a more accurate
  51.                  log in REPORTLOG than simply exiting.
  52.                o LM_A_TCP_TIMEOUT -- Automatically retrieves licenses even
  53.                  when users turn off their computers (especially Windows).
  54.                o CPU Usage is now logged to REPORTLOG file.  Vendors can
  55.                  now charge based on process CPU Usage, and users can
  56.                  do internal billbacks also based on CPU Usage.
  57.                o CPU_USAGE_INTERVAL, CPU_USAGE_DELTA  -- Users can fine-tune
  58.                  how much CPU-Usage information is logged.
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.                o Improved security for expiration dates.
  75.                o makekey is improved -- easier to use for more flexible.
  76.                o lmswitchr -- improved command-line interface.
  77.                o End-User Options file now supports PACKAGE names.
  78.                o lmdiag -- REPORTLOG now ignores lmdiag checkouts.
  79.  
  80.        Important Note
  81.        ______________
  82.  
  83.                The ENCRYPTION_SEED1 and ENCRYPTION_SEED2 in lm_code.h are
  84.                numbers which are key to FLEXlm security.  They are 0x87654321
  85.                and 0x12345678 by default.  Each vendor must ensure that you
  86.                replace these with numbers which are unique to your company,
  87.                and keep these numbers secret.  Only someone with access to
  88.                these numbers can generate license files that will work with
  89.                your application.  MAKE SURE the numbers are not left to the
  90.                defaults.
  91.  
  92.  
  93.  
  94.        Notice of Future Changes
  95.        ________________________
  96.  
  97.                Discontinuing "man" Pages
  98.                _________________________
  99.  
  100.                Starting with v6 of FLEXlm, we will no longer ship a "man"
  101.                directory, with Unix-style man pages.   These seem to
  102.                be more rarely used these days, and we ship HTML files
  103.                which provide a more popular on-line interface.
  104.  
  105.                Discontinuing debug_libs directory
  106.                __________________________________
  107.  
  108.                Starting with v6 of FLEXlm, we will no longer ship a
  109.                debug_libs directory.
  110.  
  111.  
  112.        New Features in V5.1
  113.        ____________________
  114.  
  115.  
  116.  
  117.                lc_hostid() -- improved hostid interface.
  118.                _________________________________________
  119.  
  120.                        int lc_hostid(  LM_HANDLE *job,
  121.                                        int id_type,
  122.                                        char buf[MAX_CONFIG_LINE])
  123.  
  124.                        lc_hostid() fills in buf with a hostid string
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.                        specified by type.  If type is HOSTID_DEFAULT, you get
  141.                        the default hostid type on the system.
  142.  
  143.                        Hostids have become more flexible in recent versions,
  144.                        and this allows programmers access to hostid
  145.                        information in string format.  It's recommended in the
  146.                        future that programmers use this function and avoid
  147.                        functions that deal with (HOSTID *) struct
  148.                        information, since this may change from version to
  149.                        version.
  150.  
  151.                        Note that lc_hostid may return a space-separated list
  152.                        of hostids, if that's appropriate on a given system.
  153.  
  154.                        Hostid types are specified and described in lmclient.h
  155.                        and include
  156.  
  157.                                HOSTID_LONG             HOSTID_ETHER
  158.                                HOSTID_ANY              HOSTID_USER
  159.                                HOSTID_DISPLAY          HOSTID_HOSTNAME
  160.                                HOSTID_ID_MODULE        HOSTID_STRING
  161.                                HOSTID_FLEXID1_KEY      HOSTID_DISK_SERIAL_NUM
  162.                                HOSTID_INTERNET         HOSTID_DEMO
  163.                                HOSTID_FLEXID2_KEY      HOSTID_FLEXID3_KEY
  164.                                HOSTID_FLEXID4_KEY      HOSTID_FLEXID5_KEY
  165.                                HOSTID_SERNUM_ID        HOSTID_VENDOR
  166.                                HOSTID_DEFAULT
  167.  
  168.                        lc_hostid returns 0 on success, and the FLEXlm errno on
  169.                        error.
  170.  
  171.                LM_A_RETRY_CHECKOUT attribute
  172.                _____________________________
  173.  
  174.                        When true, checkouts that fail due to communications
  175.                        errors are automatically retried once.  Often this
  176.                        second attempt will succeed on networks with poor
  177.                        communications.  This is turned on by default in both
  178.                        the Simple and Trivial API, and the default is off in
  179.                        the FLEXible API.  Use
  180.  
  181.                            lc_set_attr(job, LM_A_RETRY_CHECKOUT, (LM_A_VAL_TYPE)1);
  182.  
  183.                        to turn this attribute on for the FLEXible API
  184.                        (recommended).  It's turned off by default in the
  185.                        FLEXible API so that previous default behavior is
  186.                        preserved.
  187.  
  188.  
  189.                License File Enhancments
  190.                ________________________
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.                        SUPERSEDE List
  207.                        ______________
  208.  
  209.  
  210.                        SUPERSEDE
  211.                        SUPERSEDE="feat1 ... featn"
  212.                        SUPERSEDE=*ALL*
  213.  
  214.                        SUPERSEDE (new in v5.0) can now take a list of features
  215.                        to supersede.  This means that you can ship a single
  216.                        feature line which, if installed, will make other
  217.                        features with previous ISSUED dates unavailable to
  218.                        your customers.  This is a way to securely phase out
  219.                        FEATUREs already shipped.  If the list is "ALL", then all
  220.                        previously issued FEATURE lines are disabled.
  221.  
  222.  
  223.                        PLATFORMS="..."
  224.                        _________________________
  225.  
  226.                        This allows you to restrict usage to particular hardware
  227.                        platforms.  The platforms are defined as the same platforms
  228.                        that are used to license FLEXlm itself:  sun4_u4, i86_n3, etc.
  229.                        The names can be found in the Platform Specific Notes section
  230.                        at the bottom of this file.  Note that the platform
  231.                        name can be overridden with
  232.  
  233.                        lc_set_attr(job, LM_A_PLATFORM_OVERRIDE, (LM_A_VAL_TYPE)str);
  234.  
  235.                        Note that the trailing digit in the platform name is
  236.                        ignored, and can be optionally left off in the name.
  237.  
  238.                        If the platform list differs in any way for 2 INCREMENT
  239.                        lines for the same feature-name, they're are pooled
  240.                        separately and counted separately.
  241.  
  242.                        Examples:
  243.  
  244.                                FEATURE f1 ... PLATFORMS=sun4_u4
  245.                                INCREMENT f2 ... 1 PLATFORMS="i86_w alpha_u"
  246.                                INCREMENT f2 ... 1 PLATFORMS="i86_w"
  247.  
  248.                        f1 can be used on any sparc station running SunOS or
  249.                        Solaris.
  250.  
  251.                        f2 can be used on a PC running Windows (not NT) and
  252.                        Dec Alpha running OSF1 or DEC-Unix.  There's 1 license
  253.                        that can be shared between all Windows and Alpha-Unix
  254.                        systems, and 1 more license just for Windows.  That is,
  255.                        at most 1 f2 can be used on the Alpha-Unix systems,
  256.                        but at most 2 f2s can be used by Windows systems.
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.                        If the checkout fails because it's on the wrong
  273.                        platform, the error returned is LM_PLATNOTLIC:
  274.                        "This platform not authorized by license"
  275.  
  276.  
  277.                        ID=1234 HOSTID
  278.                        ______________
  279.  
  280.                        We now support a pseudo-hostid of "ID=...".  This is
  281.                        functionally equivalent to the "ANY" hostid -- it
  282.                        will run on any node.  The difference is that the
  283.                        customer has a unique identifier that can be used
  284.                        to identify the customer.  This hostid can be used
  285.                        to lock the license server (on the SERVER line) or
  286.                        the client node (on the FEATURE/INCREMENT line) --
  287.                        anywhere a hostid can be used.  The number can have
  288.                        dashes included for readability -- the dashes are
  289.                        ignored.
  290.  
  291.                                Examples:
  292.                                        ID=12345678 is the same as
  293.                                        ID=1234-5678 is the same as
  294.                                        ID=1-2-3-4-5-6-7-8
  295.  
  296.                        The HOSTID struct for this type is setup thus:
  297.  
  298.                                type = HOSTID_SERNUM_ID
  299.                                id.string contains the id in string format.
  300.  
  301.                lmdiag can now checkout individual INCREMENT or FEATURE lines
  302.                _____________________________________________________________
  303.  
  304.                        If a license file contains multiple lines for a
  305.                        particular feature, you can now select a particular
  306.                        line for lmdiag to report on.  For example:
  307.  
  308.                                lmdiag f1:HOSTID=12345678
  309.  
  310.                        will attempt a checkout on the line with the hostid limited
  311.                        to 12345678
  312.  
  313.                        The full syntax is:
  314.  
  315.                                lmdiag feature:specification=value
  316.  
  317.                        where:
  318.                                feature         feature name
  319.                                specification   one of the following:
  320.  
  321.                                                VERSION
  322.                                                HOSTID
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.                                                EXPDATE
  339.                                                KEY
  340.                                                VENDOR_STRING
  341.                                                ISSUER
  342.                                                NOTICE
  343.                                                dist_info
  344.                                                user_info
  345.                                                asset_info
  346.                                value           the value specifies a particular line.
  347.  
  348.                WARNING(): Warning messages for Simple and Trivial API
  349.                ____________________________________________________
  350.  
  351.                With LM_LENIENT and LM_FAILSAFE, a CHECKOUT or lp_checkout() call
  352.                may succeed, while the license was not actually checked out.
  353.                In this case, an application may want to inform the user of
  354.                the condition, while still running.
  355.                If there is a warning condition:
  356.                        1) CHECKOUT() and lp_checkout() will return 0 (success),
  357.                        2) lp_warning() and WARNING() will return a string
  358.                           describing the warning condition.
  359.  
  360.                If there is no warning condition (the license was fully
  361.                checked out from the server), then lp_warning() and WARNING()
  362.                will return 0 (NULL).
  363.  
  364.                PERROR(), PWARN(), lp_perror() and lp_pwarn()
  365.                ___________________________________________________________
  366.  
  367.                These Trivial and Simple API functions all print error
  368.                and/or warning messages to the user.
  369.  
  370.                Windows: The messages appear in popups.
  371.  
  372.                Unix:   The messages are printed to stderr.
  373.  
  374.                These functions are most useful on windows systems, since the
  375.                popups are convenient for programmers and end-users.
  376.  
  377.  
  378.                End User Options File Enhancments
  379.                ___________________________________
  380.  
  381.                        MAX
  382.                        ___
  383.  
  384.                        Syntax:         MAX numlic featurename type name
  385.                        Example:        MAX 4 f1 GROUP accounting
  386.  
  387.                        MAX gives your customers significantly more flexibility in
  388.                        how they prioritize use of licenses at their site.  In past,
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.                        you could RESERVE licenses for individuals, or prevent
  405.                        individuals from using licenses, but with MAX, you can now
  406.                        indicate that a particular GROUP has a maximum use.  You can
  407.                        also specify USER, HOST, HOST_GROUP, etc. as with all end-user
  408.                        options.  If a checkout exceeds the maximum, they will see the
  409.                        following error message:
  410.  
  411.                        Checkout exceeds MAX specified in options file (-87,147)
  412.  
  413.  
  414.                        TIMEOUTALL
  415.                        __________
  416.  
  417.                        This works the same as TIMEOUT, but applies to all features:
  418.  
  419.                                TIMEOUTALL 1000
  420.  
  421.                        All features are timed out in 1000 seconds.  See the
  422.                        Programmers and/or End-User manual for more information
  423.                        on TIMEOUT behavior.
  424.  
  425.  
  426.                        End-user Options features can now be PACKAGE names
  427.                        __________________________________________________
  428.  
  429.                        If you specify a PACKAGE name in the options file, it
  430.                        will apply to all features in that package.  This is
  431.                        true for both regular PACKAGEs and OPTIONS=SUITE.
  432.  
  433.  
  434.                lc_checkin() now takes LM_CI_ALL_FEATURES
  435.                _________________________________________
  436.  
  437.                The feature for lc_checkin can now be LM_CI_ALL_FEATURES
  438.                (which is actually a NULL pointer).  This will check in all
  439.                features currently checked out.  This has nearly the same
  440.                effect as calling lc_disconn() or even lc_free_job().
  441.                However, since a checkin message is actually sent to the
  442.                server, the REPORTLOG logs this as a normal checkin().
  443.                checkins that occur because of a disconnect are indicated
  444.                differently in the log, so that end-users could differentiate
  445.                between an application that actually calls checkin, and one
  446.                that simply exits.
  447.  
  448.                IMPORTANT:  If you use LM_CI_ALL_FEATURES (in the client) with
  449.                ls_infilter (in the vendor daemon), then ls_infilter MUST
  450.                check the feature name against LM_CI_ALL_FEATURES, which is
  451.                actually a NULL pointer.  Failure to do so may result in a
  452.                crash.  That is, you must check:
  453.  
  454.                        if (feature != LM_CI_ALL_FEATURES)
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.                LM_A_TCP_TIMEOUT
  471.                ________________
  472.  
  473.                If a client node crashes or the client node is disconnected
  474.                from the network, the license will be automatically checked
  475.                back in in LM_A_TCP_TIMEOUT seconds.
  476.                        default:                2 hours (60*60*2).
  477.                        Maximum value:          4 hours 15 minutes (15300 seconds),
  478.                                                or 0 means NO TCP timeout.
  479.                        Minimum value:          60 seconds
  480.  
  481.                CPU Usage is now logged to REPORTLOG file.
  482.                __________________________________________
  483.  
  484.                        CPU Usage is now automatically always logged when the
  485.                        REPORTLOG file is in use.  In addition, this can be
  486.                        fine-tuned by the end-user with 2 settings in the
  487.                        end-user options file.  The settings allow the user to
  488.                        limit how much CPU-usage is logged, thereby reducing
  489.                        log file size.  By default, CPU-usage is only logged
  490.                        at checkout and checkin.  However, it can also be
  491.                        logged with heartbeats enabling more accurate and
  492.                        fine-tuned CPU-usage reporting.
  493.  
  494.                                REPORTLOG filename                              [ CPU_USAGE_INTERVAL = {n|CONTINUOUS} ]                 [CPU_USAGE_DELTA = n]
  495.  
  496.                        CPU_USAGE_INTERVAL=n -- CPU-usages from heartbeats
  497.                                will be reported no more often than once every n
  498.                                minutes.  Default is a huge number.
  499.                                "CONTINUOUS" is the same as 0, but is easier
  500.                                to read.
  501.  
  502.                        CPU_USAGE_DELTA=n -- n is in tenths of a second of CPU
  503.                                time.  Only log CPU-usage if it has changed
  504.                                from the last log by n/10 seconds of CPU-time.
  505.  
  506.  
  507.                Improved Expiration Date Checking
  508.                _________________________________
  509.  
  510.                FLEXlm now automatically makes the following checks to ensure
  511.                security of the expiration date.  These checks ONLY occur if the
  512.                license to be granted is expiring.
  513.  
  514.                        1) If the date on the system running the license
  515.                           server has been set back more than 24 hours,
  516.                           checkout fails with LM_BADSYSDATE
  517.  
  518.                        2) If the client is NOT using USE_SERVER or port@host,
  519.                           the checkout fails if the client node's system date
  520.                           has been set back more than 24 hours.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.                        3) If the client's date differs by more than 24-hours
  537.                           from the server's date.
  538.  
  539.  
  540.        FLEXible API Changes
  541.        ____________________
  542.  
  543.                lc_baddate and lc_set_attr(...LM_A_MAX_TIMEDIFF) are now disabled
  544.                _________________________________________________________________
  545.  
  546.                These checks are modified and automatically performed, so these
  547.                calls are no longer needed.  For compatibility, the functions
  548.                can be called, but they don't do anything.
  549.  
  550.                We found some cases on Unix with the date expiration
  551.                routines (identified as bug P2181), which caused
  552.                a checkout to hang or take a long time.  In order to fix
  553.                these cases, the routines which detect a systems
  554.                date being set back do not detect a set-back date as often
  555.                as they did previously.
  556.  
  557.  
  558.                lc_expire_days returns LM_FOREVER on unexpiring license
  559.                _______________________________________________________
  560.  
  561.                If the license doesn't expire, the expiration date is set to
  562.                1-jan-0, and lc_expire_days will return LM_FOREVER, which
  563.                is defined to be 9999.  In version 5.0, lc_expire_days returned
  564.                the number of days until a date in the year 2038.
  565.  
  566.  
  567.  
  568.        Other Enhancements
  569.        __________________
  570.  
  571.  
  572.                makekey prompts are more helpful
  573.                ________________________________
  574.  
  575.                The makekey license generator now has a simplified, more
  576.                helpful interface, and supports the all FEATURE attributes.
  577.  
  578.  
  579.                lmswitchr accepts daemon name
  580.                _____________________________
  581.  
  582.                lmswitchr syntax is now:
  583.  
  584.                        lmswitchr [ -c license_file ] daemon new-file, or
  585.                        lmswitchr [ -c license_file ] feature new-file
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.                It used to only accept a feature name.  It now accepts a
  603.                daemon name also, and this is usually easier to use.
  604.  
  605.  
  606.                lmgrd -nfs_log -- faster logging
  607.                ________________________________
  608.  
  609.                        The -nfs_log is used to turn off fflush() commands to
  610.                        both the debug log and REPORTLOG files.  Through
  611.                        internal testing we've discovered that fflush() can,
  612.                        on some systems, noticeably slow down the servers when
  613.                        they log to files that are NFS-mounted.
  614.  
  615.                        In practice we recommend that log files NOT be
  616.                        NFS-mounted, but if you must do this, -nfs_log is then
  617.                        recommended.  This may mean that the log files will be
  618.                        behind by a transaction or two, but in practice we
  619.                        find that -nfs_log actually makes no noticeable
  620.                        change, except to make the servers run faster.
  621.  
  622.  
  623.                lmdiag:  server logs do not record checkout
  624.                ___________________________________________
  625.  
  626.                        In previous versions, when lmdiag checked out a
  627.                        license from the server, the server logs recorded the
  628.                        checkout.  The logs now no longer are affected by
  629.                        lmdiag.
  630.  
  631.  
  632.                lmcrypt: -f is now the default
  633.                ______________________________
  634.  
  635.                        In previous versions lmcrypt required -f to encrypt
  636.                        a line already encrypted.  This is now the default
  637.                        behavior and doesn't require the -f argument.
  638.                        If you prefer the old behavior, it can be modified
  639.                        in machind/lmcrypt.c.  The -f argument now has no effect.
  640.  
  641.  
  642.  
  643.        Other Changes
  644.        _____________
  645.  
  646.                makekey.c now uses lc_cryptstr()
  647.                ________________________________
  648.  
  649.                        makekey source now uses lc_cryptstr() as encrypting
  650.                        function.  It previously used lc_crypt(), which is a
  651.                        harder function to use and maintain across FLEXlm
  652.                        versions.  We now recommend that lc_cryptstr() be used
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.                        in its place.
  669.  
  670.  
  671.  
  672.        Bug fixes:
  673.        __________
  674.  
  675.                Bug  Platform   Description
  676.                P1039   all     lmcrypt and lc_cryptstr() ignore FEATURESET.
  677.                P1414   all     lmcrypt doesn't always truncate license file
  678.                                lines to 80 characters.  Note that this
  679.                                fix only applies to lines that are in the
  680.                                v4+ format -- to force this, add ck=0 attributes
  681.                                to each line.
  682.                P1460   all     In rare cases, checkouts with LM_A_CHECKOUT_DATA
  683.                                and LM_DUP_VENDOR can become orphaned and never
  684.                                checked in.
  685.                P1499   Win32   lsvendor.c defaults ls_minimum_user_timeout to 30
  686.                                seconds.
  687.                P1488   all     lc_expire_days() returns number of days until
  688.                                max-unix date if no expiration.  Fix is to
  689.                                return LM_FOREVER.
  690.                P1506   all     hostid lists should force FEATURE lines to be
  691.                                printed in "new" new format, i.e., HOSTID="..."
  692.                P1511   all     If TIMEOUT set, if the client tries to
  693.                                do a checkout between when the server frees the
  694.                                license and the client does a heartbeat, communications
  695.                                fail.  rare.
  696.                P1593   all     lmdiag core dumps if no SERVER line in license file.
  697.                P1602   all     lc_heartbeat() doc is missing from Reference Manual.
  698.                P1603   all     copyright was a global symbol.  All FLEXlm global
  699.                                symbols should have "l_" or "lc_" prefix.
  700.                P1619   all     lmstat reports non-suite PACKAGE name as "Error"
  701.                P1621   all     1 process checks out 2 SUITE components, then checks
  702.                                1 in:  SUITE-token should remain checked out, but
  703.                                is not.
  704.                P1658   all     The following end-user options file syntax did
  705.                                not RESERVE the right FEATURE line:
  706.                                "RESERVE ... feature:HOSTID=nnn"
  707.                P1659   all     lmdiag:  If there's several INCREMENT or FEATURE lines
  708.                                for the same feature name, lmdiag only reported on
  709.                                the last line.
  710.                P1674   all     lc_test_conf after checkout with LM_CO_LOCALTEST
  711.                                returned null if using port@host or USE_SERVER.
  712.                P1676   all     CHECKIN the same feature twice resulted in a core dump.
  713.                P1708   Win32   Server log says "Unknown Signal" from lmdown.
  714.                P1715   all     vendor-defined hostids fail if the vdef hostid
  715.                                routine returns lowercase characters.
  716.                P1728   all     On some platforms, LM_PROJECT environment variable
  717.                                can cause vendor daemon to crash.
  718.                P1741   all     1) use port@host or USE_SERVER, 2) feature removed
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.                                from license, then lmreread, 3) checkout returns
  735.                                LM_MAXUSERS instead of LM_NOFEATURE.
  736.                P1778   all     lmcrypt core dumps when hostid has 0x prefix.
  737.                P1825   all     lmdiag with colon-separated LM_LICENSE_FILE -- stops
  738.                                reporting when on file in the list doesn't exist.
  739.                P1843   all     lmdiag reports that licenses have incorrect syntax
  740.                                when they have vendor-defined hostids, though the
  741.                                files are correct.
  742.                P1850   all     lc_cryptstr() and lmcrypt have memory leaks when
  743.                                the feature contains "ck=nnn"
  744.                P1883   all     purify reported harmless bug in l_key.c.
  745.                P1901   all     lmcrypt/lc_cryptstr() fails with decimal hostids
  746.                                (#nnn) larger than the maximum positive 32-bit int.
  747.                P1929   all     Some lmutil utilities fail (lmdiag/lmutil, etc.) with
  748.                                FLEXLM_COMM_TRANSPORT set to UDP.
  749.                P2045   all     lmcrypt could core dump with mistyped license file.
  750.                P2058   alpha_u3 checkout uses a file descriptor which is not closed.
  751.                P2059   all     memory leak when LM_A_LICENSE_DEFAULT is called > 1
  752.                                time in a job.
  753.                P2096   i86_d4  (DG Intel): checkouts were slow.
  754.                P2118   all     makekey generates incorrect ck= checksum when
  755.                                line wraps with ''.
  756.                P2181   all     On unix systems, lc_baddate could cause a checkout
  757.                                to take a long time, or sometimes hang.
  758.  
  759.  
  760.            Known bugs:
  761.            ___________
  762.  
  763.                P1852   2       HP provides a command for changing the ethernet
  764.                                address/hostid.
  765.                                Patch:          None.
  766.                                Workaround:     Use uname -i hostid, which is more
  767.                                                secure.
  768.  
  769.        Platform Specific Notes:
  770.        ________________________
  771.  
  772.                        i86_w3
  773.                        ______
  774.  
  775.                        Win32s will not be supported after FLEXlm v5.  This is
  776.                        because Microsoft is discontinuing support for win32s.
  777.  
  778.                UNIX
  779.                ____
  780.  
  781.  
  782.  
  783.                alpha_u3
  784.                ________
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.                    uname -a:   OSF1 zippy V3.2 17 alpha
  801.                    CC:         cc -std1
  802.                    NOTE:  alpha_u1 is discontinued.  This only means that
  803.                           we no longer support v1 and v2 of the OS, and
  804.                           virtually no one uses those OS versions.  Alpha_u3
  805.                           fully supports Alpha DEC Unix 3 and 4.
  806.  
  807.                decs_u4
  808.                _______
  809.  
  810.                    uname -a:   ULTRIX newport 4.2 0 RISC
  811.                    CC:         /bin/cc -DPMAX -DULTRIX -DMIPS
  812.  
  813.                dg_u5
  814.                _____
  815.  
  816.                    uname -a:   dgux dgsvr4 5.4 generic AViiON mc88100
  817.                    CC:         /bin/cc
  818.  
  819.                encore_u4
  820.                _________
  821.  
  822.                    uname -a:   UNIX_SV encore 4.2MP 4.0.0.10 m88k m88k
  823.                    CC:         /usr/bin/cc
  824.  
  825.                hp300_u8
  826.                ________
  827.  
  828.                    uname -a:   HP-UX agent86 B.08.00 A 9000/375 080009060992
  829.                    CC:         /bin/cc
  830.                    link flags: -lBSD
  831.  
  832.                hp700_u8
  833.                ________
  834.  
  835.                    uname -a:   HI-UX hit1 02.03_/B E 3050/R 154
  836.                    CC:         /bin/cc -Aa -D_HIUX_SOURCE +DA1.0 +DS1.0
  837.                                (replace HIUX with HPUX on an HP system)
  838.                    Hostid note:  See Bug P1852 above -- we no longer recommend
  839.                                using ethernet address as a hostid.
  840.  
  841.                i86_d4
  842.                ______
  843.  
  844.                    uname -a:   dgux dgbig R4.11 generic AViiON Pentium
  845.                    CC:         /bin/cc, actually, /usr/opt/sdk/sde/ix86dgux/usr/bin
  846.  
  847.                    NOTE:       hostid comes from /dev/net/*.  By default these files
  848.                                are only readable by root.  We recommend changing the
  849.                                perms to:
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                   - 14 -
  863.  
  864.  
  865.  
  866.                                        # chmod 644 /dev/net/*
  867.                i86_l1
  868.                ______
  869.  
  870.                    uname -a:   Linux linux 1.2.13 #1 Sun Aug 13 06:33:35 EDT 1995 i586
  871.                    CC:         /usr/bin/cc
  872.                    cc -v:      Reading specs from                      /usr/lib/gcc-lib/i486-linux/2.7.0/specs
  873.                                gcc version 2.7.0
  874.  
  875.                    IMPORTANT NOTE:  v5 version uses ethernet address as a hostid,
  876.                    which is relatively secure.  v4 used the 'hostid' command,
  877.                    which was not secure.  To obtain the ethernet address, type:
  878.  
  879.                        /sbin/ifconfig eth0
  880.  
  881.                    Convert the hardward address as follows:
  882.  
  883.                        From: HWaddr 00:40:05:16:E5:25
  884.                        To:   00400516E525
  885.  
  886.                    V5 lmhostid will report ethernet address by default.  v4
  887.                    will report 'hostid'.  Both types of hostid are acceptable
  888.                    to version 5 clients and servers.
  889.  
  890.                    lmhostid, or lmhostid -ether
  891.                        -- obtains the ethernet address (secure)
  892.                    lmhostid -long
  893.                        -- obtains the output from the 'hostid' command
  894.                           (not secure)
  895.  
  896.                i86_u2
  897.                ______
  898.  
  899.                    uname -a:   UNIX_SV rolm 4.2MP 2.0 i386 x86at
  900.                    CC:         /usr/bin/cc
  901.  
  902.                i86_x5  (Solaris on Intel)
  903.                ______
  904.  
  905.                    uname -a:   SunOS sunpc 5.4 generic i86pc i386
  906.                    CC:         /opt/SUNWspro/bin (version 3.0)
  907.  
  908.                moto_u4
  909.                _______
  910.  
  911.                    uname -a:   UNIX_System_V motosvr4 4.0 R40V4.2 m88k mc88100
  912.                    CC:         /bin/cc
  913.                    link flags: -lsocket -lnsl
  914.  
  915.                nec_u2
  916.                ______
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                   - 15 -
  929.  
  930.  
  931.  
  932.  
  933.                    uname -a:   UNIX_System_V nec 4.0 2 R3000 r3000
  934.                    CC:         /bin/cc
  935.                    link flags: -lsocket -lnsl
  936.                    /usr/necbin/uversion:       Release6.2 Rev01 - EWS4800/220 - WS
  937.  
  938.                rs6000_u3
  939.                _________
  940.  
  941.                    uname -a:   AIX rs6000 1 3 000276513100
  942.                    CC:         /bin/cc -D_BSD -D_BSD_INCLUDES
  943.                    link flags: -lbsd
  944.  
  945.                sco_u3
  946.                ______
  947.  
  948.                    uname -a:   SCO_SV sco 3.2 2 i386
  949.                    uname -X:
  950.                                System = SCO_SV
  951.                                Node = sco
  952.                                Release = 3.2v5.0.0
  953.                                KernelID = 95/04/19
  954.                                Machine = i80486
  955.                                BusType = ISA
  956.                                Serial = 2CG001148
  957.                                Users = 5-user
  958.                                OEM# = 0
  959.                                Origin# = 1
  960.                                NumCPU = 1
  961.                    CC:         /bin/cc -Dsco
  962.                    link flags: scoinfo.o -lsocket
  963.  
  964.                    IMPORTANT NOTE:  Previous FLEXlm versions were built on an older OS:
  965.                                     Release = 3.2v2.0
  966.                                     KernelID = 90/10/01
  967.  
  968.                sgi_u4
  969.                ______
  970.  
  971.                    uname -a:   IRIX oly 4.0 08212247 IP6
  972.                    CC:         /usr/bin/cc -cckr
  973.                    link flags: -lsun -lbsd -lc_s
  974.  
  975.                sgi_u5
  976.                ______
  977.  
  978.                    uname -a:   IRIX indy 5.2 02282013 IP12 mips
  979.                    CC:         /bin/cc
  980.  
  981.                    To build -n32 -mips3 or -n32 -mips4 on IRIX 6:
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                   - 16 -
  995.  
  996.  
  997.  
  998.                        1) In this directory, do:
  999.  
  1000.                                % make o32
  1001.  
  1002.                           This builds all binaries in o32 format.
  1003.  
  1004.                        2) Link your application (which has been compiled with
  1005.                           -n32 -mips3 (or -mips4) with the correct FLEXlm library:
  1006.  
  1007.                                liblmgr_n32mips3.a, or
  1008.                                liblmgr_n32mips4.a
  1009.  
  1010.                    NOTE:  sgi keys are required for any 32-bit binary, including
  1011.                           IRIX 6 with -n32 flags.
  1012.  
  1013.                sgi64_u6
  1014.                ________
  1015.  
  1016.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  1017.                    CC:         /bin/cc
  1018.  
  1019.                    This was called sgir8_u6 in previous versions.  It's been
  1020.                    renamed to reflect the fact that it's 64-bit.
  1021.  
  1022.                    To build -n32 -mips3 or -n32 -mips4, see sgi_u5 above.
  1023.  
  1024.                    We currently only support 64-bit, mips4 binaries, which
  1025.                    is how all files in this directory are compiled.
  1026.  
  1027.                sun4_u4
  1028.                _______
  1029.  
  1030.                    uname -a:   SunOS ss 4.1.2 2 sun4c
  1031.                    CC:         /bin/cc
  1032.  
  1033.                    sun4_u4 is now built on a 4.1.2 system.  This means that it
  1034.                    will no longer work with 4.0.3 systems.
  1035.  
  1036.                sun4_u5
  1037.                _______
  1038.  
  1039.                    uname -a:   SunOS backstage 5.1 Generic sun4m sparc
  1040.                    CC:         /opt/SUNWspro/bin/cc
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.                                Java Addendum
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                   - 17 -
  1061.  
  1062.  
  1063.  
  1064.                Installation and Directory Naming
  1065.                ---------------------------------
  1066.                No special installation of the FLEXlm class files is required.
  1067.                The classes are in the java_01/flexlm directory of the FLEXlm
  1068.                v5.1 main directory.  Note that the FLEXlm class files must reside
  1069.                in a directory called "flexlm", since they are in a Java package
  1070.                named "flexlm".
  1071.  
  1072.                If you are running Java applications, you must set your CLASSPATH
  1073.                environment variable to include a component reflecting the location
  1074.                of the FLEXlm classes.  For example, if you installed the FLEXlm
  1075.                classes into "/a/b/c/lmgr/v5.1/java_01/flexlm" you would include
  1076.                the following component in your CLASSPATH:
  1077.                        "/a/b/c/lmgr/v5.1/java_01"
  1078.  
  1079.                If you are setting up the FLEXlm class files for access by an http
  1080.                server, they must reside in a directory called "flexlm", again
  1081.                because the FLEXlm class files are in the "flexlm" package.
  1082.  
  1083.                New Features Since v5.0
  1084.                -----------------------
  1085.                With LM.LENIENT and LM.FAILSAFE, checkout() may succeed, while
  1086.                the license was not actually checked out.  In this case, an
  1087.                application may want to inform the user of the condition, while
  1088.                still running.  If there is a warning condition:
  1089.                        1) checkout() will return 0 (success),
  1090.                        2) warning() will return a string describing the warning
  1091.                           condition.
  1092.  
  1093.                If there is no warning condition (the license was fully
  1094.                checked out from the server), warning() will return null.
  1095.  
  1096.                The string to use for the Java platform in the PLATFORM= keyword
  1097.                is "java_0".
  1098.  
  1099.                The default TCP_TIMEOUT in FLEXlm/Java is 255 minutes. There is
  1100.                no API for changing this value.
  1101.  
  1102.                Integrating FLEXlm/Java into Your Java code
  1103.                -------------------------------------------
  1104.                The constructor method for the "license" class takes your
  1105.                vendor keys and your encryption seeds as arguments.  Since
  1106.                the encryption seeds must be kept secret (anyone who knows
  1107.                your encryption seeds and has a FLEXlm kit can generate
  1108.                licenses for your product), they are XORed with vendor key 5
  1109.                when passed as method arguments.  It is strongly recommended
  1110.                that you not store your encryption seeds and vendor keys in
  1111.                variables, or pass them verbatim as arguments.
  1112.                For example, given the following:
  1113.                        Vendor name =  xyzcorp
  1114.                        vendor key 1 = 0xabcd1
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                                   - 18 -
  1127.  
  1128.  
  1129.  
  1130.                        vendor key 2 = 0xabcd2
  1131.                        vendor key 3 = 0xabcd3
  1132.                        vendor key 4 = 0xabcd4
  1133.                        vendor key 5 = 0xabcd5
  1134.                        encryption seed 1 = 0xdead1
  1135.                        encryption seed 2 = 0xdead2
  1136.  
  1137.                you would invoke the license constructor as follows:
  1138.  
  1139.                license lic = new license ("xyzcorp", 0xabcd5 ^ 0xdead1,
  1140.                                                      0xabcd5 ^ 0xdead2,
  1141.                                           0xabcd1, 0xabcd2, 0xabcd3, 0xabcd4);
  1142.  
  1143.                In this way, it's much harder for someone reading disassembled
  1144.                code to discover your encryption seeds.
  1145.  
  1146.  
  1147.                Node-locked Licenses
  1148.                --------------------
  1149.                Since Java is so portable and generic, there is not nearly the
  1150.                range of possibilities for determining a unique hostid in the
  1151.                Java environment as there are in the C/C++ world.  Therefore,
  1152.                the FLEXlm/Java library supports only "DEMO", "ANY", and
  1153.                INTERNET=xxx.xxx.xxx.xxx hostids.  Hostid lists are supported,
  1154.                so  you can node-lock a license to a list of hostids, for example:
  1155.                "INTERNET=1.2.3.4 INTERNET=1.2.3.5 INTERNET=1.2.3.6".  Wildcards
  1156.                are supported in address octets.
  1157.  
  1158.  
  1159.                Locating the License File
  1160.                -------------------------
  1161.                The checkout method allows you to specify the license file location.
  1162.                This is used to supply a runtime-determined license file location,
  1163.                such as a value supplied on the command line, applet parameter, or
  1164.                a default.  It may be specified as a colon-separated list of license
  1165.                files and/or port@host specifications.
  1166.  
  1167.                License File Restrictions
  1168.                -------------------------
  1169.                When possible, it is preferable to use "port@host" to locate the
  1170.                license file, rather than a license file path.  This is because
  1171.                the FLEXlm/Java implementation is not capable of parsing all
  1172.                possible license file syntax - when port@host is used, the server
  1173.                does all the license file parsing.  Specifically, the FLEXlm/Java
  1174.                implementation understands only the following license file lines:
  1175.                        SERVER
  1176.                        DAEMON (ignored)
  1177.                        USE_SERVER
  1178.                        FEATURE
  1179.                        INCREMENT
  1180.                        Comment lines (lines starting with the "#")
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                   - 19 -
  1193.  
  1194.  
  1195.  
  1196.                Inclusion of other line types may cause an error.
  1197.  
  1198.                In addition, the Java library does not understand KEYWORD=value
  1199.                pairs (with the exception of "INTERNET=xxx.xxx.xxx.xxx" for host
  1200.                ID). or lines continued with "
  1201.  
  1202.                Examples of license file lines which are understood by the Java
  1203.                client:
  1204.  
  1205.                SERVER speedy ANY 7132
  1206.                DAEMON demo /u/flexlm/sun4_u4/demo
  1207.                FEATURE f1 demo 1.000 1-jan-00 4 BBF8808162D4072297FF ""
  1208.                FEATURE f2 demo 1.000 1-jan-98 0 FBA85061E4ACCBA6D932 "" "INTERNET=192.156.198.82 INTERNET=192.156.199.*"
  1209.  
  1210.                Examples of license file lines which are not understood by the
  1211.                Java client:
  1212.  
  1213.                PACKAGE p1 demo 1.000 8040204170869E176457 COMPONENTS="c1 c2"
  1214.                FEATURE f1 demo 1.000 1-jan-0 4 BBF8808162D4072297FF "" HOSTID=2f2f2f2f
  1215.                FEATURE f2 demo 1.000 1-jan-98 0 FBA85061E4ACCBA6D932 ""                "INTERNET=192.156.198.82 INTERNET=192.156.199.*"
  1216.  
  1217.                To reiterate, the restriction is that the FLEXlm/Java library cannot
  1218.                parse these lines - it is perfectly reasonable to use such lines in
  1219.                a license file accessed via port@host, as the server does all the
  1220.                parsing in that scenario.  License file paths should be used only
  1221.                for uncounted licenses, where it's not necessary to run a server.
  1222.  
  1223.  
  1224.                FLEXlm display
  1225.                --------------
  1226.                The FLEXlm display is a constant ("JavaDisplay") in the Java version.
  1227.  
  1228.  
  1229.                Development Environment
  1230.                -----------------------
  1231.                The FLEXlm/Java classes were compiled using Sun's JDK v1.0.2
  1232.                on Solaris/SPARC 2.x.
  1233.  
  1234.                Known bugs in this version
  1235.                --------------------------
  1236.                - Checkin is broken in port@host environment if license file line is
  1237.                  greater than 145 bytes long.  checkin fails when called, but any
  1238.                  licenses checked out by an application or applet are checked in
  1239.                  when it exits.
  1240.                - If USE_SERVER is present anywhere in the license file, it causes
  1241.                  the server to be used for everything, not just the lines following
  1242.                  USE_SERVER.
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                   - 20 -
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.                               Flexible License Manager
  1265.  
  1266.                                     Version 5.0a
  1267.  
  1268.                                    RELEASE NOTES
  1269.  
  1270.                                    24 May, 1996
  1271.  
  1272.                These release notes describe the changes from FLEXlm v4.0
  1273.  
  1274.                To upgrade v4 source to v5, make the following changes:
  1275.  
  1276.                        1) Change "#include lm_client.h" to "#include lmclient.h"
  1277.                        2) Change LM_CODE macro:
  1278.                                ENCRYPTION_CODE_1 to ENCRYPTION_SEED1
  1279.                                ENCRYPTION_CODE_2 to ENCRYPTION_SEED2
  1280.  
  1281.                Other, rarely needed function names were also changed.  See
  1282.                the "FLEXible API Changes" section for a more complete listing
  1283.                of source changes you may need.
  1284.  
  1285.  
  1286.  
  1287.        OVERVIEW
  1288.        ________
  1289.  
  1290.                o port@host Plus! -- clients no longer need access to license file.
  1291.                  More efficient and robust.  Log files now can also log uncounted
  1292.                  licenses.
  1293.                o USE_SERVER line -- client applications automatically get the
  1294.                  benefits of port@host Plus without having to set an environment
  1295.                  variable.
  1296.                o New Trivial and Simple APIs.  Get FLEXlm functionality with
  1297.                  3 function calls.
  1298.                o lc_expire_days() -- function to tell when a license will expire
  1299.                o Server automatically notifies of licenses that will expire soon
  1300.                  upon startup.
  1301.                o Hostid lists -- ability to lock a single FEATURE or INCREMENT line
  1302.                  to several hostids.  For example, allow 10 uses to be shared amongst
  1303.                  only 3 nodes, by hostid.
  1304.                o Improved easier API for vendor-defined heartbeats.
  1305.                o lc_timer() ("heartbeats") interface made easier.
  1306.                o Easier specification of default license file location.
  1307.                o $LM_PROJECT environment variable added to REPORTLOG data for
  1308.                  FLEXadmin reporting.
  1309.                o Improved Internet Firewall support -- Can specify TCP port number
  1310.                  on DAEMON line.
  1311.                o Feature names in end-user Options file can now optionally
  1312.                  specify particular INCREMENT lines.
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                                   - 21 -
  1325.  
  1326.  
  1327.  
  1328.                o Improved lmcrypter error reporting, via new function lc_chk_conf()
  1329.                o IP Address supported for hostname on SERVER line.
  1330.                o CAPACITY license allows vendors to charge based on the
  1331.                  power of the system: e.g., PC clients can be charged less than
  1332.                  Unix clients.
  1333.                o Consolidate license files with SUPERSEDE option on FEATURE line
  1334.                o New ISSUED=date attribute -- readable issued date
  1335.                o USER_BASED and HOST_BASED licenses -- requires specified number of
  1336.                  users (or hosts) to be INCLUDEd via the end-user options file.
  1337.                o FEATURE serial number attribute:  "SN=value".
  1338.                o FEATURE MINIMUM=n checkout attribute.
  1339.                o DUP_GROUP for SUITE parent -- added flexibility for PACKAGE licensing.
  1340.                o MAX_OVERDRAFT in end-user options file -- allows end-user to limit
  1341.                  OVERDRAFT -- for negotiated fees with trusted customers.
  1342.                o End-user options vendor-daemon "pool" selection -- so end-users
  1343.                  can specify which INCREMENT line a RESERVE applies to.
  1344.                o lc_vsend() automatically connects to the server.
  1345.                o Improved end-user-specified TIMEOUT behavior -- the license is
  1346.                  freed at the TIMEOUT time, rather than upon subsequent
  1347.                  checkout request.
  1348.                o lmdiag provides more detailed FEATURE descriptions.
  1349.                o REPORTLOG format improved -- it's takes 75% less disk space,
  1350.                  holds significantly more information, and will produce faster
  1351.                  FLEXadmin reports.
  1352.                o lmstrip utility for security.
  1353.                o Overall improved security.
  1354.  
  1355.        New Features in V5.0
  1356.        ____________________
  1357.  
  1358.                port@host PLUS!
  1359.                _______________
  1360.  
  1361.                        This is a significant enhancement for the port@host
  1362.                        feature in FLEXlm -- the behavior is nearly the same
  1363.                        as the existing port@host feature, but performance
  1364.                        is enhanced. (Note: the old behavior is still available
  1365.                        with the syntax "-port@host" -- prepend a minus sign).
  1366.                        With port@host PLUS:
  1367.  
  1368.                                o The client never reads the license file,
  1369.                                  so startup is faster, particularly with
  1370.                                  large license files.
  1371.                                o Sites with large license files, or Wide-Area
  1372.                                  networks can now safely use port@host
  1373.                                o License servers can now log usage of
  1374.                                  uncounted licenses.  To do this, make sure
  1375.                                  the license file has a SERVER and DAEMON
  1376.                                  line.  If it does not, simply prepend them.
  1377.                                  The debug and report log files will then
  1378.                                  log usage for uncounted licenses in addition
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.                                   - 22 -
  1391.  
  1392.  
  1393.  
  1394.                                  to the normal logging of counted licenses.
  1395.  
  1396.  
  1397.                Automatic port@host via USE_SERVER
  1398.                __________________________________
  1399.  
  1400.                        port@host behavior is preferable to having the client
  1401.                        application read the license file, since the application
  1402.                        does not have to have a file in sync with the server.
  1403.  
  1404.                        Now you can get this behavior automatically.  Simply
  1405.                        put the USE_SERVER keyword in the license file
  1406.                        after the SERVER line, and the client will behave as
  1407.                        though it were using port@host.
  1408.  
  1409.                        If you have uncounted lines in your license file,
  1410.                        and you're not running a server, or if you want clients
  1411.                        to not check out uncounted licenses from your
  1412.                        running server, put the uncounted lines before the
  1413.                        USE_SERVER line in the file.
  1414.  
  1415.                        With USE_SERVER, client copies of the license file
  1416.                        are only required to have a SERVER line, followed by a
  1417.                        USE_SERVER line.  Anything after that in the file
  1418.                        is ignored by client applications.
  1419.  
  1420.  
  1421.                New Optional Trival and Simple APIs:
  1422.                ___________________________________
  1423.  
  1424.                        This new API is "policy-based".  That is, you specify
  1425.                        an overall policy, with some optional modifiers, and
  1426.                        everything is taken care of automatically.  This
  1427.                        new API is recommended for most companies that have
  1428.                        straightforward licensing needs.
  1429.  
  1430.                        Every attempt is made in these APIs to automatically
  1431.                        solve common problems.  For example, the display
  1432.                        setting comes from the $DISPLAY environment variable,
  1433.                        which is converted to an IP address for security
  1434.                        reasons.  For this reason, to override the display
  1435.                        setting, a programmer should use putenv() (or
  1436.                        setenv()) to set the variable before checking out a
  1437.                        license.  You will notice other, automatic, behavior
  1438.                        that differs from the old, now called "FLEXible", API.
  1439.  
  1440.                        See the example in machind/policy.c.
  1441.  
  1442.                        The following is a complete, correct example of
  1443.                        the new API, using the Trivial API macros:
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                                   - 23 -
  1457.  
  1458.  
  1459.  
  1460.                        #include "lmpolicy.h"
  1461.  
  1462.                        main()
  1463.                        {
  1464.                                if (CHECKOUT(LM_RESTRICTIVE, "f1", "1.0","license.dat"))
  1465.                                {
  1466.                                        fprintf(stderr, "%s0, ERRSTRING());
  1467.                                        exit(1);
  1468.                                }
  1469.                                /* your application code here */
  1470.                                CHECKIN();
  1471.                        }
  1472.  
  1473.                        POLICIES:
  1474.                        _________
  1475.  
  1476.                        LM_RESTRICTIVE  -- checkout, return failure if fails
  1477.                        LM_QUEUE        -- checkout, but queue if failure
  1478.                                           return error if other
  1479.                        LM_FAILSAFE     -- Always run.  Queue for license
  1480.                                           if MAXUSERS.
  1481.                        LM_LENIENT      -- return error on MAXUSERS, otherwise
  1482.                                           return success.
  1483.  
  1484.                        MODIFIERS:
  1485.                        __________
  1486.  
  1487.                        LM_MANUAL_HEARTBEAT --  call HEARTBEAT(), which returns number
  1488.                                                of retries
  1489.                        LM_RETRY_RESTRICTIVE -- HEARTBEAT will attempt retries forever,
  1490.                                                unless this is set, where it will
  1491.                                                exit after the 5th retry attempt.
  1492.  
  1493.                        FUNCTIONS:
  1494.                        __________
  1495.  
  1496.                        There's 2 levels of function calls: macro-level
  1497.                        (Trivial) and actual functions (Simple).  Most users
  1498.                        will be able to use the Trivial API, which works only
  1499.                        work if your binary checks out no more than one
  1500.                        feature at a time.  Otherwise, you'll need to use the
  1501.                        function calls.
  1502.  
  1503.                        Trivial API:
  1504.                                CHECKOUT(policy, feature, version, licpath)
  1505.  
  1506.                                where
  1507.  
  1508.                                policy  (int) is one of the policies listed above, with
  1509.                                        modifiers ORed in, e.g.,
  1510.                                        LM_RESTRICTIVE | LM_MANUAL_HEARTBEAT.
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.                                   - 24 -
  1523.  
  1524.  
  1525.  
  1526.                                feature (char *) feature name.
  1527.                                version (char *) version in floating point format.
  1528.                                licpath (char *) path to default location for license
  1529.                                                 file.  If 0, ignored.
  1530.  
  1531.                                Returns 0 if success, else FLEXlm lm_errno.
  1532.  
  1533.                                CHECKIN() -- checks in the license from CHECKOUT
  1534.  
  1535.                                ERRSTRING() -- returns (char *) explanatory message
  1536.                                        for the latest FLEXlm error.
  1537.  
  1538.                                HEARTBEAT() -- exchanges heartbeat messages with
  1539.                                        server.  Returns 0 if success, else,
  1540.                                        number of failed retry attempts performed.
  1541.  
  1542.                        Simple API:
  1543.  
  1544.                                lp_checkout(VENDOR_NAME, code, policy, feature,
  1545.                                        version, nlic, licpath, lp_handle)
  1546.  
  1547.                                where
  1548.  
  1549.                                VENDOR_NAME -- from lm_code.h.
  1550.                                code        -- from LM_CODE macro, as in normal FLEXlm
  1551.                                policy      -- see CHECKOUT above.
  1552.                                feature     -- ditto
  1553.                                version     -- ditto
  1554.                                nlic        -- number of licenses to checkout
  1555.                                licpath     -- see CHECKOUT above
  1556.                                lp_handle   -- pointer to LP_HANDLE *.  This is
  1557.                                               return handle from lp_checkout, and
  1558.                                               is used with all subsequent lp_xxx
  1559.                                               calls, e.g.,
  1560.                                                LP_HANDLE *lp;
  1561.                                                ...
  1562.                                                lp_checkout(...,&lp);
  1563.  
  1564.                                return values same as CHECKOUT
  1565.  
  1566.                                lp_checkin(lp) -- lp is value returned from lp_checkout
  1567.  
  1568.                                lp_errstring(lp) -- lp is value returned from
  1569.                                        lp_checkout
  1570.  
  1571.                                lp_heartbeat(lp, nreconn, minutes)
  1572.                                        (Only used if policy is modified with
  1573.                                         LM_MANUAL_HEARTBEAT)
  1574.  
  1575.                                        lp      -- value returned from lp_checkout
  1576.                                        nreconn -- pointer to integer -- number of
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.                                   - 25 -
  1589.  
  1590.  
  1591.  
  1592.                                                   reconnects in "minutes" (if NULL,
  1593.                                                   ignored)
  1594.                                        minutes -- return nreconn in this many
  1595.                                                   minutes (if 0, ignored)
  1596.                                        lp_heartbeat return values same as HEARTBEAT
  1597.  
  1598.                                        nreconn can be used to discourage
  1599.                                        end-user theft by stopping and
  1600.                                        starting servers.
  1601.  
  1602.                New FEATURE attributes:
  1603.                _______________________
  1604.  
  1605.                        Hostid Lists
  1606.                        ____________
  1607.  
  1608.                        Hostids can now be a list of hostids.  The syntax is:
  1609.  
  1610.                                "hostid1 hostid2 ... hostidn"
  1611.  
  1612.                        For FEATURE lines in the new format, this will look
  1613.                        like:
  1614.  
  1615.                                FEATURE ... HOSTID="hostid1 hostid2 ... hostidn"
  1616.  
  1617.  
  1618.                        This can be used on the FEATURE/INCREMENT/UPGRADE
  1619.                        lines, but is not supported on the SERVER line (where
  1620.                        it's not really needed).  It allows node-locking to a
  1621.                        list of hosts, an often requested feature.
  1622.  
  1623.                        HOSTID struct now has a new member: next.  This is now
  1624.                        a null-terminated list of hostids.  Usually, vendors
  1625.                        that examine this struct only do so to see if they
  1626.                        have a DEMO license.  For that reason, this new member
  1627.                        (next) should normally not be needed by vendors.
  1628.  
  1629.                        Two new functions are available for these lists (which
  1630.                        should be rarely needed):
  1631.  
  1632.                                void lc_free_hostid(job, hostid)
  1633.  
  1634.                                        and
  1635.  
  1636.                                HOSTID *lc_copy_hostid(job, hostid)
  1637.  
  1638.  
  1639.                        DAEMON port number -- Internet Firewall Support
  1640.                        _______________________________________________
  1641.  
  1642.                        Some firewalls require the administrator to specify
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                                   - 26 -
  1655.  
  1656.  
  1657.  
  1658.                        which ports are available to clients outside the
  1659.                        firewall.  In this case it is necessary to define not
  1660.                        only the TCP port that lmgrd will use, but also the
  1661.                        port each vendor daemon will use.  This can now be
  1662.                        done on the DAEMON line.  The new syntax is:
  1663.  
  1664.                        DAEMON vdaemon_name path [ [port=]port_num ]                            [ [options=]options.dat ]
  1665.  
  1666.  
  1667.                        where port_num is a TCP port number and options.dat
  1668.                        is the path to the end-user options file.
  1669.  
  1670.                        For VMS, the old syntax for port, as well as this new
  1671.                        syntax, is supported.  This is not, however, currently
  1672.                        supported for NT or Netware servers, and it's unlikely
  1673.                        to be needed since firewalls are currently rarer for
  1674.                        these systems.
  1675.  
  1676.  
  1677.                        SN=serial_number
  1678.                        ________________
  1679.  
  1680.                        SN=serial_number: This is a optional, encrypted, string
  1681.                        attribute, useful for differentiating otherwise
  1682.                        identical INCREMENT lines.
  1683.  
  1684.  
  1685.                        USER_BASED and HOST_BASED
  1686.                        _________________________
  1687.  
  1688.                        Syntax:
  1689.                                USER_BASED[=n]
  1690.                                HOST_BASED[=n]
  1691.                        If USER_BASED is specified, then all licenses must be
  1692.                        INCLUDEd to USER names via the end-user options file.
  1693.                        Similarly, if HOST_BASED is specified, then all
  1694.                        licenses must be INCLUDEd via HOST names.
  1695.                        USER_BASED cannot appear on the same line with HOST_BASED.
  1696.  
  1697.                        If =n appears, then the number of USERs or HOSTs is
  1698.                        limited to n; otherwise, the limit is the number of
  1699.                        users in the FEATURE.
  1700.  
  1701.                        Will create new vendor-daemon pools. (See note about
  1702.                        Vendor Daemon Pools later in this RELEASE_NOTES.)
  1703.  
  1704.  
  1705.                        MINIMUM=n
  1706.                        _________
  1707.  
  1708.                        Syntax: MINIMUM=min.  If lc_checkout(...nlic...),
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.                                   - 27 -
  1721.  
  1722.  
  1723.  
  1724.                        nlic is less than min, then the server will checkout min.
  1725.  
  1726.  
  1727.                        SUPERSEDE and ISSUED
  1728.                        ____________________
  1729.  
  1730.                        This allows vendors to sum up a set of INCREMENT lines
  1731.                        in a single, new FEATURE (or INCREMENT) line, which
  1732.                        supersedes all INCREMENT lines for the same feature
  1733.                        name with previous start-dates.  Note that the start
  1734.                        date is the one field which is not readable in the
  1735.                        license file, and is part of the 20-character license
  1736.                        key.
  1737.  
  1738.                        To make this more readable, we've also added a new
  1739.                        ISSUED=date field (e.g., ISSUED=1-jan-1996).  If the
  1740.                        ISSUED date is set, then SUPERSEDE uses it, otherwise
  1741.                        it uses the start-date
  1742.  
  1743.                        For example:
  1744.  
  1745.                                INCREMENT f1 ... 1 ...
  1746.                                INCREMENT f1 ... 1 ...
  1747.                                INCREMENT f1 ... 1 ...
  1748.                                INCREMENT f1 ... 4 ... SUPERSEDE
  1749.  
  1750.                        Assuming that the start date on the first 3 INCREMENT
  1751.                        lines are prior to the last, the user will get only 4
  1752.                        uses of f1, and the first 3 INCREMENT lines can be
  1753.                        deleted with no impact on the number of licenses of f1
  1754.                        available.  Naturally, this is more readable in
  1755.                        combination with ISSUED:
  1756.  
  1757.                                INCREMENT f1 ... 1 ... ISSUED=1-jan-1995
  1758.                                INCREMENT f1 ... 1 ... ISSUED=1-jan-1995
  1759.                                INCREMENT f1 ... 1 ... ISSUED=1-jan-1995
  1760.                                INCREMENT f1 ... 4 ... SUPERSEDE ISSUED=1-jan-1996
  1761.  
  1762.  
  1763.                        CAPACITY and LM_A_CAPACITY
  1764.                        __________________________
  1765.  
  1766.                        The most common purpose of CAPACITY is to charge more
  1767.                        for a more powerful system.  For example, with CAPACITY,
  1768.                        you could automatically checkout more licenses on a Unix
  1769.                        system than on a PC, thereby effectively charging more
  1770.                        for the more powerful system.
  1771.  
  1772.                        CAPACITY is a checkout multiplier--if lc_checkout
  1773.                        requests 1 license, and CAPACITY is set to 3, 3 licenses
  1774.                        will be checked out.
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                                   - 28 -
  1787.  
  1788.  
  1789.  
  1790.  
  1791.                        CAPACITY is set by
  1792.  
  1793.                                1) Adding the CAPACITY keyword to the FEATURE
  1794.                                   line
  1795.                                2) Setting CAPACITY in the application with
  1796.                                   lc_set_attr(job, LM_A_CAPACITY,
  1797.                                        (LM_A_VAL_TYPE)value);
  1798.                                   This value becomes a multiplier to the
  1799.                                   checkout number IF CAPACITY is set in the
  1800.                                   license file.
  1801.  
  1802.                        If CAPACITY is missing from the FEATURE line, the attribute
  1803.                        setting in the code will have no effect.
  1804.  
  1805.                        Similarly, if CAPACITY is on the FEATURE line, but
  1806.                        there is no call to lc_set_attr(...LM_A_CAPACITY), this
  1807.                        will have no effect.
  1808.  
  1809.                        The attribute must be set before the first connection
  1810.                        to the server (usually lc_checkout), and cannot be
  1811.                        reset once set.
  1812.  
  1813.                        CAPACITY will create new vendor-daemon pools. (See note about
  1814.                        Vendor Daemon Pools later in this RELEASE_NOTES.)
  1815.  
  1816.  
  1817.                        SUITE_DUP_GROUP for PACKAGE SUITEs
  1818.                        __________________________________
  1819.  
  1820.                        An enabling FEATURE line for a PACKAGE can now specify
  1821.                        a different duplicate grouping for the "parent" of the
  1822.                        suite than for its components via SUITE_DUP_GROUP=xxx
  1823.                        where xxx is any combination of UHDV.  (See the manual
  1824.                        for DUP_GROUP for an explanation of duplicate
  1825.                        grouping.) Note: If SUITE_DUP_GROUP is not specified,
  1826.                        the parent will have the same duplicate grouping as
  1827.                        the components.
  1828.  
  1829.                        For example:
  1830.  
  1831.                        PACKAGE pkg demo 1.050 E0A0A0B133C159D609A5                     COMPONENTS="c1 c2" OPTIONS=SUITE
  1832.                        FEATURE pkg demo 1.050 01-jan-0 3 6B9C2001518FA9DA4193                  DUP_GROUP=U SUITE_DUP_GROUP=NONE
  1833.  
  1834.                        Features "c1" and "c2" will have a duplicate grouping
  1835.                        mask of USER, while the parent feature, "pkg", will
  1836.                        have a mask of NONE.  This means the same user can use
  1837.  
  1838.                        3 uses of c1, or
  1839.                        2 uses of c1 and 1 of c2, or
  1840.                        1 use of c1 and 2 of c2
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.                                   - 29 -
  1853.  
  1854.  
  1855.  
  1856.                        IP Address now supported as hostname on SERVER line
  1857.                        ___________________________________________________
  1858.  
  1859.                        You can now use an IP address in the format #.#.#.#
  1860.                        instead of a hostname on the SERVER line.  Note this
  1861.                        is ONLY supported when all clients and servers referring
  1862.                        to the license file are v5 or higher.
  1863.  
  1864.  
  1865.                        makekey vs lmcrypt
  1866.                        ___________________________
  1867.  
  1868.                        makekey has not been extended to support the new
  1869.                        FEATURE line attributes, and will not be extended in
  1870.                        the future.  We recommend that you use lmcrypt
  1871.                        instead, as lmcrypt is much easier to use.  Moreover,
  1872.                        adding yet more options to makekey would make it more
  1873.                        and more cumbersome to use.  The source for makekey is
  1874.                        available in machind/makekey.c, and you are free to
  1875.                        add options to it as needed.
  1876.  
  1877.                New FLEXible API Functions
  1878.                __________________________
  1879.  
  1880.                        lc_expire_days()
  1881.                        ________________
  1882.  
  1883.                        This new function returns the number of days until a license
  1884.                        expires.  It's syntax is:
  1885.  
  1886.                                int days;
  1887.                                CONFIG *conf;
  1888.  
  1889.                                conf = lc_get_config(job, feature);
  1890.                                days = lc_expire_days(job, conf);
  1891.  
  1892.                        It's return values are:
  1893.  
  1894.                                > 0  -- days till expiration
  1895.                                  0  -- license will expire today at midnight
  1896.                                < 0  -- lm_errno:  LM_LONGGONE (expired) or
  1897.                                        LM_BADPARAM (invalid config argument).
  1898.  
  1899.                        lc_errtext()
  1900.                        ____________
  1901.  
  1902.                        Returns error message for FLEXlm errno.  Syntax:
  1903.  
  1904.                        (char *)error_message = lc_errtext(lm_job, lm_errno);
  1905.  
  1906.                        Do not free the string returned from this function -- it's
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.                                   - 30 -
  1919.  
  1920.  
  1921.  
  1922.                        static memory in the FLEXlm library.  If needed later, it
  1923.                        should be copied to ensure it's value doesn't change.
  1924.  
  1925.                        lc_chk_conf()
  1926.                        _____________
  1927.  
  1928.                        char * lc_chk_conf(job, conf, check_name)
  1929.                        LM_HANDLE *job;
  1930.                        CONFIG *conf;
  1931.                        int check_name;
  1932.  
  1933.                        Given a pointer to a CONFIG struct, lc_chk_conf
  1934.                        returns a string describing errors in the struct, or
  1935.                        NULL if no problems are found.  This is automatically
  1936.                        called by lc_cryptstr(), so if you're using lmcrypt or
  1937.                        lc_cryptstr() you don't need to additionally call
  1938.                        lc_chk_conf().
  1939.  
  1940.                        Normally this should only be used by a license
  1941.                        generation program that calls lc_crypt(), such as
  1942.                        makekey.
  1943.  
  1944.                        If check_name is true, invalid feature names will also be
  1945.                        reported.
  1946.  
  1947.  
  1948.                        lc_heartbeat()
  1949.                        ______________
  1950.  
  1951.                        lc_heartbeat can be used instead of lc_timer, allowing
  1952.                        more security and a non-callback based API.  Syntax is:
  1953.  
  1954.                        int lc_heartbeat(LM_HANDLE *job, int *ret_num_reconnects,
  1955.                                                        int minutes)
  1956.  
  1957.                        This is the same as lp_heartbeat, described above.
  1958.                        lc_heartbeat returns 0 upon success or the number of
  1959.                        failed connections to the server.  If lc_heartbeat
  1960.                        fails, the application can notify the user, or
  1961.                        if the number of failures is high, penalize the user
  1962.                        by exiting or other steps.
  1963.  
  1964.                        In addition, the 2nd and 3rd arguments can be used to
  1965.                        provide additional security: It is possible to steal
  1966.                        licenses by starting and restarting the server.  One
  1967.                        way to thwart this is to detect many reconnections in
  1968.                        a short period, and take appropriate steps if this is
  1969.                        discovered.  The ret_num_reconnects is a pointer to
  1970.                        an integer, which is set to the the number of reconnections
  1971.                        in the number of minutes specified in the last argument.
  1972.                        ret_num_reconnects is ONLY set when a reconnection
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.                                   - 31 -
  1985.  
  1986.  
  1987.  
  1988.                        occurs, which in turn only occurs when lc_heartbeat
  1989.                        returns 0.
  1990.  
  1991.                        Following is a possible example for using this function:
  1992.  
  1993.                                int num_reconnects, rc;
  1994.  
  1995.                                rc = lc_heartbeat(lm_job, &num_reconnects, 10);
  1996.                                if (rc) tell_user("The server is down);
  1997.                                else if (num_reconnects > 3)
  1998.                                {
  1999.                                        tell_user("Server restarted too many times");
  2000.                                        exit(-1);
  2001.                                }
  2002.  
  2003.  
  2004.                Vendor Daemon logs licenses soon to expire
  2005.                __________________________________________
  2006.  
  2007.                        Upon startup, the vendor daemon will report licenses
  2008.                        that will expire within 2 weeks.
  2009.  
  2010.                End-User Options File "pool" selection
  2011.                ______________________________________
  2012.  
  2013.                        Because of INCREMENT, when you RESERVE based on a
  2014.                        feature name, prior to v5 you could not control which
  2015.                        "pool" for that feature was being RESERVEd.  For
  2016.                        example,
  2017.  
  2018.                        FEATURE   f1 demo 1.0 ...
  2019.                        INCREMENT f1 demo 2.0 ...
  2020.  
  2021.                        This will create 2 separate pools in the vendor
  2022.                        daemon, tracking version 1.0 licenses SEPARATELY from
  2023.                        v2.0 uses.  (Different pools are created if the
  2024.                        version, hostid, and sometimes the vendor-defined
  2025.                        string are different.)
  2026.  
  2027.                        RESERVE 1 f1 USER daniel
  2028.  
  2029.                        This will reserve only from the first pool.  Should
  2030.                        you want to reserve a 2.0 version of f1 for daniel,
  2031.                        you can do this with
  2032.  
  2033.                        RESERVE 1 f1:VERSION=2.0 USER daniel
  2034.  
  2035.                        You can specify a feature by any of the following fields:
  2036.  
  2037.                        VERSION
  2038.                        HOSTID
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.                                   - 32 -
  2051.  
  2052.  
  2053.  
  2054.                        EXPDATE
  2055.                        KEY
  2056.                        VENDOR_STRING
  2057.                        ISSUER
  2058.                        NOTICE
  2059.                        dist_info
  2060.                        user_info
  2061.                        asset_info
  2062.  
  2063.                        Note that the lowercase fields are values that user
  2064.                        can modify in the license file.  So, another way to
  2065.                        select the 2nd pool in the above example is to modify
  2066.                        the INCREMENT line to:
  2067.  
  2068.                        INCREMENT f1 demo 2.0 ... asset_info="pick this"
  2069.  
  2070.                        And RESERVE by:
  2071.  
  2072.                        RESERVE 1 f1:asset_info="pick this" USER daniel
  2073.  
  2074.                        This new functionality applies everywhere a feature
  2075.                        name is specified in the end-user options file:
  2076.  
  2077.                        INCLUDE, INCLUDEALL, EXCLUDE, etc.
  2078.  
  2079.                $LM_PROJECT
  2080.                ___________
  2081.  
  2082.                        If a client application has the $LM_PROJECT
  2083.                        environment variable set, then this will be logged in
  2084.                        the vendor daemon's REPORTLOG, for FLEXadmin's report
  2085.                        writer.
  2086.  
  2087.                End-User MAX_OVERDRAFT limit
  2088.                ________________________
  2089.  
  2090.                        If a license includes an OVERDRAFT limit, the end-user
  2091.                        can choose to reduce the overdraft amount, in the
  2092.                        end-user options file.  The syntax is
  2093.  
  2094.                        MAX_OVERDRAFT feature nnn
  2095.  
  2096.                        where nnn is a number less than the OVERDRAFT amount
  2097.                        for this feature in the license.dat file.
  2098.  
  2099.                        The ascii debug log file reports this:
  2100.  
  2101.                        14:58:03 (demo) FEATURE f1 OVERDRAFT reduced from 20 to 10
  2102.  
  2103.                        This can be used to offer discounts to trusted customers.
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.                                   - 33 -
  2117.  
  2118.  
  2119.  
  2120.                lmcrypt and lc_cryptstr()
  2121.                ___________________________
  2122.  
  2123.                        Error messages are improved.  Here's an example of the
  2124.                        improved output:
  2125.  
  2126.                        license.dat:line 3:"INCREMENT f1 demo 1.050 01-jan-99 0
  2127.                        DB1C20014C0C97B05C0A USER_BAS ..."
  2128.                        Uncounted (number of users is 0) missing hostid
  2129.                                Invalid license file syntax (-2,269)
  2130.  
  2131.  
  2132.                New, Simplified Vendor-Defined Hostid--LM_A_VENDOR_ID_DECLARE
  2133.                _____________________________________________________________
  2134.  
  2135.                        This has been simplified from 4 callback functions,
  2136.                        to 1 callback function and an attribute setting.
  2137.  
  2138.                        Here's sample code:
  2139.  
  2140.                        Step 1:  make a source file hostids.c
  2141.  
  2142.                        /* hostids.c: */
  2143.  
  2144.                        /* define a callback function for getting the hostid */
  2145.  
  2146.                        HOSTID *
  2147.                        get_vd_hostid(hostid_num)
  2148.                        int hostid_num;
  2149.                        {
  2150.                          HOSTID *id = l_new_hostid(); /* Must call l_new_hostid()
  2151.                                                          to allocate this hostid */
  2152.                        /*
  2153.                         *              We return the fixed strings for
  2154.                         *              illustration.  The real function would
  2155.                         *              determine the hostid, and return it as
  2156.                         *              a string
  2157.                         */
  2158.                                id->type = hostid_num;
  2159.                                switch (hostid_num == HOSTID_VENDOR)
  2160.                                {
  2161.                                case HOSTID_VENDOR:
  2162.                                        strcpy(id->id.vendor, "1234");
  2163.                                        return id;
  2164.                                case HOSTID_VENDOR+1:
  2165.                                        strcpy(id->id.vendor, "4321")
  2166.                                        return id;
  2167.                                default: return (HOSTID *)0; /* internal error */
  2168.                                }
  2169.                        }
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.                                   - 34 -
  2183.  
  2184.  
  2185.  
  2186.                        /* define a function to register all vendor-defined hostid
  2187.                           information: */
  2188.  
  2189.                        void
  2190.                        register_hostids()
  2191.                        {
  2192.                                /* declare an LM_VENDOR_HOSTID struct */
  2193.                                LM_VENDOR_HOSTID h;
  2194.  
  2195.                                /* register the callback */
  2196.                                lc_set_attr(lm_job, LM_A_VENDOR_GETHOSTID,
  2197.                                        (LM_A_VAL_TYPE)(get_vd_hostid));
  2198.  
  2199.                                /* define the first hostid type */
  2200.                                h.label = "MYHOSTID_KEYWORD";
  2201.                                h.hostid_num = HOSTID_VENDOR;
  2202.                                h.case_sensitive = 0;
  2203.                                h.get_vendor_id = get_vd_hostid;
  2204.  
  2205.                                /* register this definition: */
  2206.                                lc_set_attr(lm_job, LM_A_VENDOR_ID_DECLARE,
  2207.                                                                (LM_A_VAL_TYPE)&h);
  2208.                                /* define the next hostid type */
  2209.                                h.label = "SECOND_HOSTID";
  2210.                                h.hostid_num = HOSTID_VENDOR+1;
  2211.                                h.case_sensitive = 0;
  2212.                                h.get_vendor_id = get_vd_hostid;
  2213.  
  2214.                                /* register this definition: */
  2215.                                lc_set_attr(lm_job, LM_A_VENDOR_ID_DECLARE,
  2216.                                                        (LM_A_VAL_TYPE)&h);
  2217.                        }
  2218.  
  2219.                        Step 2: call register_hostids from client application, and
  2220.                                license generators (lmcrypt, makekey, etc.)
  2221.  
  2222.                                LM_HANDLE *lm_job;
  2223.  
  2224.                                ...
  2225.  
  2226.                                lc_init(..., &lm_job);
  2227.  
  2228.                                register_hostids();
  2229.  
  2230.                                ...
  2231.  
  2232.  
  2233.                        Step 3: Modify machind/ls_vendor.c thus:
  2234.  
  2235.                                ...
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.                                   - 35 -
  2249.  
  2250.  
  2251.  
  2252.                                ls_user_init2 = register_hostids;
  2253.  
  2254.                                ...
  2255.  
  2256.                        Step 4: Modify makefiles to include hostids.c.
  2257.  
  2258.  
  2259.        FLEXible API Changes
  2260.        ____________________
  2261.  
  2262.                ENCRYPTION_CODE_1 and ENCRYPTION_CODE_2 names changed
  2263.                _____________________________________________________
  2264.  
  2265.                They are replaced with ENCRYPTION_SEED1 and ENCRYPTION_SEED2.
  2266.                There is no functional change, just a name change to
  2267.                use a more standard terminology for the function of these
  2268.                seeds.  If you want to use an existing lm_code.h file,
  2269.                you'll need to change these names.
  2270.  
  2271.                lc_get_dlist() and lc_free_daemon_list() removed
  2272.                ________________________________________________
  2273.  
  2274.                        These 2 functions are removed from the public API for
  2275.                        FLEXlm.  (They still exist internally as l_get_dlist()
  2276.                        and l_free_daemon_list()).  There's little or no reason
  2277.                        why an application should need these functions.  In
  2278.                        addition, they don't always work with the new Port At
  2279.                        Host Plus functionality.
  2280.  
  2281.                lc_flush_config renamed to l_flush_config
  2282.                _________________________________________
  2283.  
  2284.                lc_flush_config should no longer be used in applications.
  2285.                Where an application needs to reread the license file, it
  2286.                should create a new job, via lc_init().  Otherwise FLEXlm
  2287.                will itself automatically read the license file when it
  2288.                is appropriate to do so.
  2289.  
  2290.                Therefore lc_flush_config() has been renamed to l_flush_config().
  2291.                l_flush_config() takes the same arguments.  You can continue to
  2292.                use l_flush_config() for now, but at best it rereads the license
  2293.                file unnecessarily, and at worst it can cause a core dump, if
  2294.                a successful checkout has already occurred.
  2295.  
  2296.  
  2297.                lc_node_lock() removed in this version
  2298.                ______________________________________
  2299.  
  2300.                        This function has been removed as of v5.0.
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.                                   - 36 -
  2315.  
  2316.  
  2317.  
  2318.                HOSTID struct changed
  2319.                _____________________
  2320.  
  2321.                        NOHOSTID is removed.  This is replaced by a
  2322.                        NULL hostid pointer.
  2323.  
  2324.                        Demo licenses are now indicated by the type member
  2325.                        being set to HOSTID_DEMO.  This used to be
  2326.                        override member set to DEMO_SOFTWARE.
  2327.  
  2328.                CONFIG struct "HOSTID id" member changed
  2329.                ________________________________________
  2330.  
  2331.                        This struct is defined in lm_client.h, and utilized
  2332.                        by many FLEXlm functions.  The id member used to be
  2333.                        a HOSTID struct.  It's now renamed to idptr, and it's
  2334.                        a pointer to a HOSTID struct.  We renamed it so that
  2335.                        if you referenced it in the past, the compiler will
  2336.                        give you a compile time error.  The pointer will be
  2337.                        NULL if the CONFIG line doesn't have a hostid.  In previous
  2338.                        versions, the type was set to NOHOSTID if there was
  2339.                        nohostid.  This type has been removed.
  2340.  
  2341.                lc_timer returns int -- simpler heartbeat interface
  2342.                ___________________________________________________
  2343.  
  2344.                        lc_timer returns the current number of failed reconnection
  2345.                        attempts to the server.
  2346.  
  2347.                        With this return value, a program can now avoid using
  2348.                        callbacks (LM_A_USER_RECONNECT, and LM_A_USER_RECONNECT_DONE)
  2349.                        to handle heartbeats.  Many programmers will find this
  2350.                        a simpler, improved interface when their program must call
  2351.                        lc_timer directly, rather than through SIGALRM (the
  2352.                        default behavior) or via the X or Windows window manager.
  2353.  
  2354.                        NOTE: when lc_timer indicates no connection, do not
  2355.                        then call lc_checkout.  lc_timer has already done
  2356.                        this, and calling lc_checkout on an already checked
  2357.                        out feature will result in a confused state.
  2358.  
  2359.                lc_getid_type() and lc_gethostid()
  2360.                __________________________________
  2361.  
  2362.                        These function returns a pointer to a list of HOSTID
  2363.                        structs.  Each time either one is called, the list is
  2364.                        free'd.  Therefore, don't call either twice, and
  2365.                        expect a previously returned pointer to be valid.
  2366.  
  2367.  
  2368.                LM_A_LICENSE_FILE
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.                                   - 37 -
  2381.  
  2382.  
  2383.  
  2384.                LM_A_LICENSE_FILE_PTR
  2385.                LM_A_LICENSE_DEFAULT (attributes for lc_set_attr)
  2386.                _______________________________________________________________
  2387.  
  2388.                        LM_A_LICENSE_FILE and LM_A_LICENSE_FILE_PTR are pre-v5
  2389.                        ways of setting these license file location.  They
  2390.                        behave the same as in v4, and, (it is noted here
  2391.                        although it wasn't in the v4 manual or RELEASE_NOTES),
  2392.                        behave identically to each other.
  2393.  
  2394.                        LM_A_LICENSE_DEFAULT is new, and is usually preferred
  2395.                        to the old methods.
  2396.  
  2397.                        LM_A_LICENSE_DEFAULT:  Normally, this is the preferred,
  2398.                        and most efficient, method for setting the license
  2399.                        file variable.  This honors $LM_LICENSE_FILE
  2400.                        environment variable first, then the path indicated to
  2401.                        lc_set_attr().  If no valid license files are found in
  2402.                        either location, it will return LM_NOCONFFILE as an
  2403.                        error.
  2404.  
  2405.                        The only reason to use the older attributes is if you
  2406.                        explicitly do NOT want to honor the $LM_LICENSE_FILE
  2407.                        environment variable, or if you want an error status
  2408.                        returned if the license file is missing, but
  2409.                        $LM_LICENSE_FILE is good.  Again, this is not normally
  2410.                        recommended.
  2411.  
  2412.                        As of v5.0, we recommend code similar to the following
  2413.                        to set a default license location:
  2414.  
  2415.                        lc_set_attr(job, LM_A_LICENSE_DEFAULT, path);
  2416.  
  2417.                        where "path" is a location in your product's
  2418.                        distribution hierarchy.  Again, this will honor
  2419.                        $LM_LICENSE_FILE first, as well as the license finder,
  2420.                        so that your users can easily override the location in
  2421.                        your distribution hierarchy.
  2422.  
  2423.  
  2424.                Retry Forever--LM_A_RETRY_COUNT
  2425.                _______________________________
  2426.  
  2427.                        A more and more common policy is to retry to connect
  2428.                        and checkout a license forever.  You can now set
  2429.                        LM_A_RETRY_COUNT to -1 to explicitly request this
  2430.                        behavior.
  2431.  
  2432.                        lc_set_attr(job, LM_A_RETRY_COUNT, (LM_A_VAL_TYPE)-1);
  2433.  
  2434.                        The PC version now defaults to -1 for LM_A_RETRY_COUNT.
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.                                   - 38 -
  2447.  
  2448.  
  2449.  
  2450.                        In addition, on the PC, it is now disallowed to set
  2451.                        LM_A_RETRY_COUNT to anything other than -1 without
  2452.                        also setting LM_A_USER_EXITCALL.
  2453.  
  2454.  
  2455.                lc_checkout returns BADPARAM for nlic = 0
  2456.                __________________________________________
  2457.  
  2458.                        lc_checkout() returns BADPARAM if the number of
  2459.                        licenses to be checked out is 0.
  2460.  
  2461.  
  2462.                File name changes
  2463.                _________________
  2464.  
  2465.                        All files now have common names for Windows, VMS, and
  2466.                        Unix, in 8.3 format.  On Unix and VMS, and old
  2467.                        filenames will still be available.  The following
  2468.                        files are affected:
  2469.  
  2470.                        Old Name                New
  2471.                        ________                ___
  2472.  
  2473.                          binary directory:
  2474.                        create_license          makekey
  2475.                        create_pkg              makepkg
  2476.                        isvaliddate             validdat
  2477.                        lmcrypter               lmcrypt
  2478.                        lmfeatset               lmfeats
  2479.                        ls_vendor.o             lsvendor.o
  2480.  
  2481.                          machind:
  2482.                        DEMO.notes              demo.txt
  2483.                        RELEASE_NOTES           relnotes.txt
  2484.                        create_lic.c            makekey.c
  2485.                        create_pkg.c            makepkg.c
  2486.                        isvaliddate.c           validdat.c
  2487.                        lm_client.h             lmclient.h
  2488.                        lm_errors.h             lmerrors.h
  2489.                        lm_hosttype.h           lmhtype.h
  2490.                        lmcrypter.c             lmcrypt.c
  2491.                        ls_feature.h            lsfeatur.h
  2492.                        ls_master.h             lsmaster.h
  2493.                        ls_server.h             lsserver.h
  2494.                        ls_vendor.c             lsvendor.c
  2495.                        style_guide.ps          style.ps
  2496.  
  2497.                          examples directory:
  2498.                        vendor_hostid           vdhostid
  2499.                        vendor_info             vdinfo
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.                                   - 39 -
  2513.  
  2514.  
  2515.  
  2516.                LM_DEMOKIT error removed
  2517.                ________________________
  2518.  
  2519.                        lc_init() never returns LM_DEMOKIT error as of v5.
  2520.  
  2521.        Other Enhancements
  2522.        __________________
  2523.  
  2524.                lc_timer()
  2525.                __________
  2526.  
  2527.                        This function will do nothing if it is called within
  2528.                        20 seconds of the last time it was called.  This
  2529.                        prevents needless delays that would occur should
  2530.                        lc_timer be called too often.
  2531.  
  2532.                lc_vsend()
  2533.                __________
  2534.  
  2535.                        This function will now connect to a server if it is
  2536.                        not already connected.  Note that if a user has
  2537.                        a colon-separated list for licenses, it will connect
  2538.                        to the first server in the list.
  2539.  
  2540.                TIMEOUT
  2541.                _______
  2542.  
  2543.                        If a client is timed-out via the end-user option
  2544.                        TIMEOUT, it is now free'd from the server, within 2
  2545.                        minutes from the time it times out.  Previously,
  2546.                        TIMEOUTs were only checked when a license for the same
  2547.                        feature name was requested.
  2548.  
  2549.  
  2550.                lmdiag
  2551.                ______
  2552.  
  2553.                        lmdiag provides a more extensive description of each
  2554.                        license file line, and provides more error detection,
  2555.                        particularly if the license has been mis-typed.
  2556.  
  2557.  
  2558.                Vendor Daemon Pools
  2559.                ___________________
  2560.  
  2561.                        When an INCREMENT line occurs for a feature that
  2562.                        already appears in the license file, the vendor
  2563.                        daemon will add these licenses in one of two ways:
  2564.                        either the licenses will be "pooled" with the previous
  2565.                        line, or it will be counted separately, and not "pooled."
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.                                   - 40 -
  2579.  
  2580.  
  2581.  
  2582.                        This behavior has existed since INCREMENT was introduced
  2583.                        in v3.0, but the specifics were not documented before.
  2584.  
  2585.                        If 2 lines differ by:
  2586.  
  2587.                                hostid
  2588.                                version
  2589.                                USER_BASED
  2590.                                HOST_BASED
  2591.                                CAPACITY
  2592.  
  2593.                        they are counted separately.  If they differ in any
  2594.                        other way, they are counted in a single "pool."
  2595.  
  2596.  
  2597.                REPORTLOG format changed
  2598.                ________________________
  2599.  
  2600.                The end-user option REPORTLOG format has changed.  This is the
  2601.                file used by FLEXadmin to report on historical usage.  The
  2602.                file is considerably improved:
  2603.  
  2604.                        o The file size is now 1/3 to 1/10 it's old size, depending
  2605.                          on each customer's actual usage (The file size will be
  2606.                          somewhat larger with a larger pool of users.)
  2607.                        o Considerably more information is in the file, including:
  2608.                                - full license file information
  2609.                                - authentication codes to detect end-user
  2610.                                  modification.
  2611.                                - more complete transaction information.
  2612.  
  2613.                lmstrip
  2614.                _______
  2615.  
  2616.                lmstrip utility adds additional security to licensing on Unix.
  2617.                (Note that these security issues don't exist on Windows.)
  2618.                'lmstrip -h' lists it's usage:
  2619.  
  2620.                Help: Usage: lmstrip file [ -l ] [ -e | -n ] [ -r ][ strings... ]
  2621.                        -l      List internal and external names to be stripped
  2622.                        -e      Don't strip external names
  2623.                        -n      Don't strip internal and external names
  2624.                        -r      Replaces strings with random printable characters
  2625.                        strings Strip these strings from the executable
  2626.  
  2627.                        Use -e if lc_xxx calls are made from shared library
  2628.  
  2629.                        Use -r if you're linking 2 versions of FLEXlm.  (This is
  2630.                        discussed fully in the FLEXlm Reference Manual.  See lmstrip).
  2631.  
  2632.                It improves security and ease-of-use in 3 areas:
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.                                   - 41 -
  2645.  
  2646.  
  2647.  
  2648.                        1) Fully-linked binaries, including vendor daemons
  2649.                        2) Shipping libraries.
  2650.                        3) Linking with libraries that also use FLEXlm.
  2651.  
  2652.                1) For shipping binaries and vendor daemons, we suggest running:
  2653.  
  2654.                        % lmstrip binary_name
  2655.  
  2656.                2) Shipping libraries:
  2657.  
  2658.                   Assuming there's a single .o file that makes flexlm calls,
  2659.                   (license.o):
  2660.  
  2661.                        % ld -r license.o liblmgr.a -o lmgr_license.o
  2662.                        % lmstrip -r lmgr_license.o
  2663.  
  2664.                   You then ship lmgr_license.o to your customers.
  2665.  
  2666.                3) Linking with libraries that already use FLEXlm.  See the
  2667.                   FLEXlm Reference Manual.
  2668.  
  2669.  
  2670.        Other Changes
  2671.        _____________
  2672.  
  2673.                Debug libraries are shipped compressed
  2674.                ______________________________________
  2675.  
  2676.                On Unix, the debug_libs directory contains libraries with
  2677.                -g debug flag turned on.  These libraries are now shipped
  2678.                compressed.  Use the uncompress flag to use these libraries.
  2679.  
  2680.                License Finder now turned off by default
  2681.                ________________________________________
  2682.  
  2683.                The FLEXlm finder is turned off on Windows by default.
  2684.                It can be forced on by setting FLEXLM_USE_FINDER environment
  2685.                variable to "1".  The change was made because the finder
  2686.                uses gethostbyname(), and this can adversely affect performance,
  2687.                or cause a hang, when NIS or DNS is not working properly.
  2688.  
  2689.  
  2690.        Bug fixes:
  2691.        __________
  2692.  
  2693.                Bug     Platform  Description
  2694.                P265    all       lmstat doesn't report two features of the same
  2695.                                  name from different daemons.
  2696.                P338    VMS       lmstat and lmswitch failed when daemon started as
  2697.                                  batch.
  2698.                P353    all       lc_feat_list failed when first server in colon-sep
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.                                   - 42 -
  2711.  
  2712.  
  2713.  
  2714.                                  list was down
  2715.                P456    all       Can't RESERVE specific INCREMENT lines.
  2716.                P539    all       lc_lic_where sometimes report wrong path.
  2717.                P564    VMS       If license path contained non-existent file, rest
  2718.                                  of path wasn't searched.
  2719.                P639    hp700     Compiler flags weren't always correct.
  2720.                P668    SCO       lc_baddate failed on sco.
  2721.                P681    SCO       Install instructions were incorrect for SCO, where
  2722.                                  the install has to be done more manually, since
  2723.                                  SCO csh syntax is limited.
  2724.                P682    all       Server pools licenses with different expiring dates,
  2725.                                  and doesn't expire licenses after being read.
  2726.                P688    all       lmreread sometimes caused checkouts to fail.
  2727.                P699    all       lmdiag sometimes misleading reported error -73.
  2728.                P700    NT        Timers silently fail in console Mode.
  2729.                P702    all       Name=Value attribute pairs could have false matches.
  2730.                P707    all       reconnection would fail when 2 INCREMENT lines
  2731.                                  that don't pool are both checked out.
  2732.                P715    hp700     lmcrypter failed with gcc as compiler.
  2733.                P722    all       lmdiag missing man page.
  2734.                P724    all       -v arg to lmgrd and utilities wasn't always working.
  2735.                P743    Windows   Counted node-locked to VSN, hangs
  2736.                P754    all       lmstat -A didn't always print correct user list.
  2737.                P756    all       LM_A_PERIODIC_CALL callbacks sometimes didn't get
  2738.                                  called.
  2739.                P757    all       lc_checkout with cnt=0 silently fails.
  2740.                P760    all       Vendor-defined hostids must be of type string.
  2741.                                  Otherwise silently fail.
  2742.                P765    rs6000    License file path with '@' in names fails.
  2743.                P766    all       Child processes inherit FLEXlm socket descriptor.
  2744.                P767    all       String hostid types failed with trailing blanks.
  2745.                P768    all       create_license silently creates invalid license
  2746.                                  if counted license with no SERVER line.
  2747.                P772    all       2 quick lmdown commands can corrupt REPORTLOG file.
  2748.                P774    all       PACKAGE with same name as component silently fails.
  2749.                P783    netware   Won't run on Netware v3.11
  2750.                P786    Win/NT/Netware    vendor daemon name > 8 characters fails.
  2751.                P790    all       lmswitch doesn't honor LM_LICENSE_FILE.
  2752.                P793    hp700     When NIS or DNS fails, log file report ??? for
  2753.                                  username.
  2754.                P796    all       lmcksum fails on vendor-defined hostid.
  2755.                P829    sunos4    Spurious errors reported when SIGALRM set, but
  2756.                                  not alarm or setitimer().
  2757.                P837    NT        Can't pass args to lmgrd as a service.
  2758.                P844    Windows   Malloc errors weren't always reported -- a different,
  2759.                                  misleading, error would result.
  2760.                P847    all       Can't use lmcrypter with expire date > 2026.
  2761.                P851    hp700     node-locked features take too long to get hostid,
  2762.                                  and use SIGALRM, causing problems with programs
  2763.                                  that separately use SIGALRM.
  2764.                P876    Unix      Calling setrlimit after lc_init can cause core dump.
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.                                   - 43 -
  2777.  
  2778.  
  2779.  
  2780.                P883    all       License lines were sometimes > 80 characters long.
  2781.                P884    all       Can miscount total number of licenses.
  2782.                P885    Unix      lmcrypter leaves temporary file in /usr/tmp when
  2783.                                  input is stdin.
  2784.                P904    all       SUITE PACKAGE in ls_use_all_features daemon fails
  2785.                                  when enabled with FEATURE.
  2786.                P905    all       lmdown incorrectly report "1 server shutdown" on
  2787.                                  redundant servers.
  2788.                P910    all       lc_master_list memory wasn't free'd by lc_free_job().
  2789.                P914    sgir8     lmver fails, use "string <file> | grep Copy" instead.
  2790.                P916    all       lmstat doesn't report counted features when
  2791.                                  preceded by uncounted for daemon none.
  2792.                P924    all       finder used even when $LM_LICENSE_FILE set.
  2793.                P926    all       man page for lc_errstring fixed.
  2794.                P953    Intel/DEC lmdiag extended diagnostics failed on systems with
  2795.                                  reverse-byte order shorts.
  2796.                P969    all       lmcrypt fails if first char in COMPONENTS= is space.
  2797.                P976    all       lc_checkin reported a spurious error when dequeueing.
  2798.                P989    Win95     License finder doesn't work on Windows 95.
  2799.                P1009   all       lmswitchr failed without a "-c license_file" argument
  2800.                P1035   all       lc_expire_days incorrect when exp-date > 2038
  2801.                P1045   all       report.log linger value is set to dup_select value.
  2802.                P1052   all       DAEMON port number wasn't reused when vd restarted
  2803.                P1064   all       4-digit year errors in SUPERSEDE, lc_expire_days
  2804.                P1066   all       success of starting REPORTLOG now accurate in
  2805.                                  lmgrd log
  2806.                P1067   all       REPORTLOG large license files causes server to fail.
  2807.                P1072   all       large license files fail producing report.log files
  2808.                P1082   all       client can hang in checking out a license with a
  2809.                & P1089           lot of traffic
  2810.                P1127   all       ip address is incorrect (sometimes) in report.log
  2811.                P1135   all       license for client with DUP_GROUP not always freed
  2812.                                  when client dies
  2813.                P1144   all       VD_FEAT_INFO -- user_cnt was wrong
  2814.                P1052   all       DAEMON port not reused with redundant servers.
  2815.                P1162   all       Trivial and Simple API can core dump.  Mostly on
  2816.                                  solaris 2.4
  2817.                P1174   all       CONFIG_DAEMON edits ls_vendor.c, wrong file --
  2818.                                  should be lsvendor.c
  2819.                P1179   all       lmgrd restarting daemon--daemon can hang because the
  2820.                                  port is in use.
  2821.                P1180   Win/NT    Backwards compatibility problem with 4.1 rainbows
  2822.                                  dongle license
  2823.                P1188   all       INTERNET= hostid fails when counted.
  2824.                P1190   all       lc_userlist(), called 2+ times, gives duplicate
  2825.                                  results with port@host (or USE_SERVER)
  2826.                P1225   NT        v4 style of vendor-defined hostid failed with v5.
  2827.                P1230   all       lc_userlist can fail.
  2828.                P1268   all       LM_A_VD_FEATURE_INFO can fail with redundant servers
  2829.                P1277   all       node-locked client can hang with port@host when
  2830.                                  on wrong host.
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.                                   - 44 -
  2843.  
  2844.  
  2845.  
  2846.            Known bugs:
  2847.            ___________
  2848.  
  2849.                P1007   sco       UDP communications does not work.  It appears to
  2850.                                  be a bug in the OS we ported to, 3.2v5.
  2851.                P1179   all       PORT=nnn only: lmgrd restarting daemon,
  2852.                                  daemon can hang until clients drop connections to
  2853.                                  dead daemon.
  2854.  
  2855.  
  2856.        Platform Specific Notes:
  2857.        ________________________
  2858.  
  2859.                        i86_w3
  2860.                        ______
  2861.  
  2862.                        Win32s will not be supported after FLEXlm v5.  This is
  2863.                        because Microsoft is discontinuing support for win32s.
  2864.  
  2865.                UNIX
  2866.                ____
  2867.  
  2868.  
  2869.                alpha_u1
  2870.                ________
  2871.  
  2872.                    uname -a:   OSF1 speedy 1.2 10 alpha
  2873.                    CC:         cc -std1
  2874.  
  2875.                decs_u4
  2876.                _______
  2877.  
  2878.                    uname -a:   ULTRIX newport 4.2 0 RISC
  2879.                    CC:         /bin/cc -DPMAX -DULTRIX -DMIPS
  2880.  
  2881.                dg_u5
  2882.                _____
  2883.  
  2884.                    uname -a:   dgux dgsvr4 5.4 generic AViiON mc88100
  2885.                    CC:         /bin/cc
  2886.  
  2887.                encore_u4
  2888.                _________
  2889.  
  2890.                    uname -a:   UNIX_SV encore 4.2MP 4.0.0.10 m88k m88k
  2891.                    CC:         /usr/bin/cc
  2892.  
  2893.                hp300_u8
  2894.                ________
  2895.  
  2896.                    uname -a:   HP-UX agent86 B.08.00 A 9000/375 080009060992
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.                                   - 45 -
  2909.  
  2910.  
  2911.  
  2912.                    CC:         /bin/cc
  2913.                    link flags: -lBSD
  2914.  
  2915.                hp700_u8
  2916.                ________
  2917.  
  2918.                    uname -a:   HI-UX hit1 02.03_/B E 3050/R 154
  2919.                    CC:         /bin/cc -Aa -D_HIUX_SOURCE +DA1.0 +DS1.0
  2920.                                (replace HIUX with HPUX on an HP system)
  2921.  
  2922.                i86_d4
  2923.                ______
  2924.  
  2925.                    uname -a:   dgux dgbig R4.11 generic AViiON Pentium
  2926.                    CC:         /bin/cc, actually, /usr/opt/sdk/sde/ix86dgux/usr/bin
  2927.  
  2928.                    NOTE:       hostid comes from /dev/net/*.  By default these files
  2929.                                are only readable by root.  We recommend changing the
  2930.                                perms to:
  2931.  
  2932.                                        # chmod 644 /dev/net/*
  2933.                i86_l1
  2934.                ______
  2935.  
  2936.                    uname -a:   Linux linux 1.2.13 #1 Sun Aug 13 06:33:35 EDT 1995 i586
  2937.                    CC:         /usr/bin/cc
  2938.                    cc -v:      Reading specs from                      /usr/lib/gcc-lib/i486-linux/2.7.0/specs
  2939.                                gcc version 2.7.0
  2940.  
  2941.                    IMPORTANT NOTE:  v5 version uses ethernet address as a hostid,
  2942.                    which is relatively secure.  v4 used the 'hostid' command,
  2943.                    which was not secure.  To obtain the ethernet address, type:
  2944.  
  2945.                        /sbin/ifconfig eth0
  2946.  
  2947.                    Convert the hardward address as follows:
  2948.  
  2949.                        From: HWaddr 00:40:05:16:E5:25
  2950.                        To:   00400516E525
  2951.  
  2952.                    V5 lmhostid will report ethernet address by default.  v4
  2953.                    will report 'hostid'.  Both types of hostid are acceptable
  2954.                    to version 5 clients and servers.
  2955.  
  2956.                    lmhostid, or lmhostid -ether
  2957.                        -- obtains the ethernet address (secure)
  2958.                    lmhostid -long
  2959.                        -- obtains the output from the 'hostid' command
  2960.                           (not secure)
  2961.  
  2962.                i86_u2
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.                                   - 46 -
  2975.  
  2976.  
  2977.  
  2978.                ______
  2979.  
  2980.                    uname -a:   UNIX_SV rolm 4.2MP 2.0 i386 x86at
  2981.                    CC:         /usr/bin/cc
  2982.  
  2983.                i86_x5  (Solaris on Intel)
  2984.                ______
  2985.  
  2986.                    uname -a:   SunOS sunpc 5.4 generic i86pc i386
  2987.                    CC:         /opt/SUNWspro/bin (version 3.0)
  2988.  
  2989.                moto_u4
  2990.                _______
  2991.  
  2992.                    uname -a:   UNIX_System_V motosvr4 4.0 R40V4.2 m88k mc88100
  2993.                    CC:         /bin/cc
  2994.                    link flags: -lsocket -lnsl
  2995.  
  2996.                nec_u2
  2997.                ______
  2998.  
  2999.                    uname -a:   UNIX_System_V nec 4.0 2 R3000 r3000
  3000.                    CC:         /bin/cc
  3001.                    link flags: -lsocket -lnsl
  3002.  
  3003.                rs6000_u3
  3004.                _________
  3005.  
  3006.                    uname -a:   AIX rs6000 1 3 000276513100
  3007.                    CC:         /bin/cc -D_BSD -D_BSD_INCLUDES
  3008.                    link flags: -lbsd
  3009.  
  3010.                sco_u3
  3011.                ______
  3012.  
  3013.                    uname -a:   SCO_SV sco 3.2 2 i386
  3014.                    uname -X:
  3015.                                System = SCO_SV
  3016.                                Node = sco
  3017.                                Release = 3.2v5.0.0
  3018.                                KernelID = 95/04/19
  3019.                                Machine = i80486
  3020.                                BusType = ISA
  3021.                                Serial = 2CG001148
  3022.                                Users = 5-user
  3023.                                OEM# = 0
  3024.                                Origin# = 1
  3025.                                NumCPU = 1
  3026.                    CC:         /bin/cc -Dsco
  3027.                    link flags: scoinfo.o -lsocket
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.                                   - 47 -
  3041.  
  3042.  
  3043.  
  3044.                    IMPORTANT NOTE:  Previous FLEXlm versions were built on an older OS:
  3045.                                     Release = 3.2v2.0
  3046.                                     KernelID = 90/10/01
  3047.  
  3048.                sgi_u4
  3049.                ______
  3050.  
  3051.                    uname -a:   IRIX oly 4.0 08212247 IP6
  3052.                    CC:         /usr/bin/cc -cckr
  3053.                    link flags: -lsun -lbsd -lc_s
  3054.  
  3055.                sgi_u5
  3056.                ______
  3057.  
  3058.                    uname -a:   IRIX indy 5.2 02282013 IP12 mips
  3059.                    CC:         /bin/cc
  3060.  
  3061.                    To build -n32 -mips3 or -n32 -mips4 on IRIX 6:
  3062.  
  3063.                        1) In this directory, do:
  3064.  
  3065.                                % make o32
  3066.  
  3067.                           This builds all binaries in o32 format.
  3068.  
  3069.                        2) Link your application (which has been compiled with
  3070.                           -n32 -mips3 (or -mips4) with the correct FLEXlm library:
  3071.  
  3072.                                liblmgr_n32mips3.a, or
  3073.                                liblmgr_n32mips4.a
  3074.  
  3075.                    NOTE:  sgi keys are required for any 32-bit binary, including
  3076.                           IRIX 6 with -n32 flags.
  3077.  
  3078.                sgi64_u6
  3079.                ________
  3080.  
  3081.                    uname -a:   IRIX64 challenger 6.1 07121831 IP26 mips
  3082.                    CC:         /bin/cc
  3083.  
  3084.                    This was called sgir8_u6 in previous versions.  It's been
  3085.                    renamed to reflect the fact that it's 64-bit.
  3086.  
  3087.                    To build -n32 -mips3 or -n32 -mips4, see sgi_u5 above.
  3088.  
  3089.                    We currently only support 64-bit, mips4 binaries, which
  3090.                    is how all files in this directory are compiled.
  3091.  
  3092.                sun4_u4
  3093.                _______
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.                                   - 48 -
  3107.  
  3108.  
  3109.  
  3110.                    uname -a:   SunOS ss 4.1.2 2 sun4c
  3111.                    CC:         /bin/cc
  3112.  
  3113.                    sun4_u4 is now built on a 4.1.2 system.  This means that it
  3114.                    will no longer work with 4.0.3 systems.
  3115.  
  3116.                sun4_u5
  3117.                _______
  3118.  
  3119.                    uname -a:   SunOS backstage 5.1 Generic sun4m sparc
  3120.                    CC:         /opt/SUNWspro/bin/cc
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.